mirror of https://github.com/RPCS3/rpcs3.git
merge qt_music_error_handler into qt_music_handler
This commit is contained in:
parent
86f86f516a
commit
587d0b2c36
|
@ -348,7 +348,7 @@
|
||||||
<ClCompile Include="QTGeneratedFiles\Debug\moc_qt_camera_handler.cpp">
|
<ClCompile Include="QTGeneratedFiles\Debug\moc_qt_camera_handler.cpp">
|
||||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild>
|
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
<ClCompile Include="QTGeneratedFiles\Debug\moc_qt_music_error_handler.cpp">
|
<ClCompile Include="QTGeneratedFiles\Debug\moc_qt_music_handler.cpp">
|
||||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild>
|
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
<ClCompile Include="QTGeneratedFiles\Debug\moc_recvmessage_dialog_frame.cpp">
|
<ClCompile Include="QTGeneratedFiles\Debug\moc_recvmessage_dialog_frame.cpp">
|
||||||
|
@ -612,7 +612,7 @@
|
||||||
<ClCompile Include="QTGeneratedFiles\Release\moc_qt_camera_handler.cpp">
|
<ClCompile Include="QTGeneratedFiles\Release\moc_qt_camera_handler.cpp">
|
||||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>
|
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
<ClCompile Include="QTGeneratedFiles\Release\moc_qt_music_error_handler.cpp">
|
<ClCompile Include="QTGeneratedFiles\Release\moc_qt_music_handler.cpp">
|
||||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>
|
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
<ClCompile Include="QTGeneratedFiles\Release\moc_recvmessage_dialog_frame.cpp">
|
<ClCompile Include="QTGeneratedFiles\Release\moc_recvmessage_dialog_frame.cpp">
|
||||||
|
@ -752,7 +752,6 @@
|
||||||
<ClCompile Include="rpcs3qt\persistent_settings.cpp" />
|
<ClCompile Include="rpcs3qt\persistent_settings.cpp" />
|
||||||
<ClCompile Include="rpcs3qt\progress_indicator.cpp" />
|
<ClCompile Include="rpcs3qt\progress_indicator.cpp" />
|
||||||
<ClCompile Include="rpcs3qt\qt_camera_handler.cpp" />
|
<ClCompile Include="rpcs3qt\qt_camera_handler.cpp" />
|
||||||
<ClCompile Include="rpcs3qt\qt_music_error_handler.cpp" />
|
|
||||||
<ClCompile Include="rpcs3qt\qt_music_handler.cpp" />
|
<ClCompile Include="rpcs3qt\qt_music_handler.cpp" />
|
||||||
<ClCompile Include="rpcs3qt\recvmessage_dialog_frame.cpp" />
|
<ClCompile Include="rpcs3qt\recvmessage_dialog_frame.cpp" />
|
||||||
<ClCompile Include="rpcs3qt\render_creator.cpp" />
|
<ClCompile Include="rpcs3qt\render_creator.cpp" />
|
||||||
|
@ -1398,8 +1397,7 @@
|
||||||
</CustomBuild>
|
</CustomBuild>
|
||||||
<ClInclude Include="rpcs3qt\pad_device_info.h" />
|
<ClInclude Include="rpcs3qt\pad_device_info.h" />
|
||||||
<ClInclude Include="rpcs3qt\progress_indicator.h" />
|
<ClInclude Include="rpcs3qt\progress_indicator.h" />
|
||||||
<ClInclude Include="rpcs3qt\qt_music_handler.h" />
|
<CustomBuild Include="rpcs3qt\qt_music_handler.h">
|
||||||
<CustomBuild Include="rpcs3qt\qt_music_error_handler.h">
|
|
||||||
<AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>
|
<AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>
|
||||||
<Message Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Moc%27ing %(Identity)...</Message>
|
<Message Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Moc%27ing %(Identity)...</Message>
|
||||||
<Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\QTGeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp</Outputs>
|
<Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\QTGeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp</Outputs>
|
||||||
|
|
|
@ -849,13 +849,10 @@
|
||||||
<ClCompile Include="rpcs3qt\qt_music_handler.cpp">
|
<ClCompile Include="rpcs3qt\qt_music_handler.cpp">
|
||||||
<Filter>Io\music</Filter>
|
<Filter>Io\music</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
<ClCompile Include="rpcs3qt\qt_music_error_handler.cpp">
|
<ClCompile Include="QTGeneratedFiles\Debug\moc_qt_music_handler.cpp">
|
||||||
<Filter>Io\music</Filter>
|
|
||||||
</ClCompile>
|
|
||||||
<ClCompile Include="QTGeneratedFiles\Debug\moc_qt_music_error_handler.cpp">
|
|
||||||
<Filter>Generated Files\Debug</Filter>
|
<Filter>Generated Files\Debug</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
<ClCompile Include="QTGeneratedFiles\Release\moc_qt_music_error_handler.cpp">
|
<ClCompile Include="QTGeneratedFiles\Release\moc_qt_music_handler.cpp">
|
||||||
<Filter>Generated Files\Release</Filter>
|
<Filter>Generated Files\Release</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
<ClCompile Include="rpcs3qt\vfs_dialog_usb_tab.cpp">
|
<ClCompile Include="rpcs3qt\vfs_dialog_usb_tab.cpp">
|
||||||
|
@ -1202,9 +1199,6 @@
|
||||||
<ClInclude Include="rpcs3qt\shortcut_utils.h">
|
<ClInclude Include="rpcs3qt\shortcut_utils.h">
|
||||||
<Filter>Gui\utils</Filter>
|
<Filter>Gui\utils</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
<ClInclude Include="rpcs3qt\qt_music_handler.h">
|
|
||||||
<Filter>Io\music</Filter>
|
|
||||||
</ClInclude>
|
|
||||||
<ClInclude Include="rpcs3qt\uuid.h">
|
<ClInclude Include="rpcs3qt\uuid.h">
|
||||||
<Filter>Gui\utils</Filter>
|
<Filter>Gui\utils</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
|
@ -1486,7 +1480,7 @@
|
||||||
<CustomBuild Include="rpcs3qt\camera_settings_dialog.h">
|
<CustomBuild Include="rpcs3qt\camera_settings_dialog.h">
|
||||||
<Filter>Gui\settings</Filter>
|
<Filter>Gui\settings</Filter>
|
||||||
</CustomBuild>
|
</CustomBuild>
|
||||||
<CustomBuild Include="rpcs3qt\qt_music_error_handler.h">
|
<CustomBuild Include="rpcs3qt\qt_music_handler.h">
|
||||||
<Filter>Io\music</Filter>
|
<Filter>Io\music</Filter>
|
||||||
</CustomBuild>
|
</CustomBuild>
|
||||||
<CustomBuild Include="rpcs3qt\vfs_dialog_usb_tab.h">
|
<CustomBuild Include="rpcs3qt\vfs_dialog_usb_tab.h">
|
||||||
|
@ -1639,4 +1633,4 @@
|
||||||
<Filter>Scripts</Filter>
|
<Filter>Scripts</Filter>
|
||||||
</None>
|
</None>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
</Project>
|
</Project>
|
||||||
|
|
|
@ -65,7 +65,6 @@ add_library(rpcs3_ui STATIC
|
||||||
progress_indicator.cpp
|
progress_indicator.cpp
|
||||||
qt_camera_handler.cpp
|
qt_camera_handler.cpp
|
||||||
qt_camera_video_sink.cpp
|
qt_camera_video_sink.cpp
|
||||||
qt_music_error_handler.cpp
|
|
||||||
qt_music_handler.cpp
|
qt_music_handler.cpp
|
||||||
qt_utils.cpp
|
qt_utils.cpp
|
||||||
register_editor_dialog.cpp
|
register_editor_dialog.cpp
|
||||||
|
|
|
@ -1,95 +0,0 @@
|
||||||
#include "qt_music_error_handler.h"
|
|
||||||
#include "util/logs.hpp"
|
|
||||||
|
|
||||||
LOG_CHANNEL(music_log, "Music");
|
|
||||||
|
|
||||||
template <>
|
|
||||||
void fmt_class_string<QMediaPlayer::Error>::format(std::string& out, u64 arg)
|
|
||||||
{
|
|
||||||
format_enum(out, arg, [](QMediaPlayer::Error value)
|
|
||||||
{
|
|
||||||
switch (value)
|
|
||||||
{
|
|
||||||
case QMediaPlayer::Error::NoError: return "NoError";
|
|
||||||
case QMediaPlayer::Error::ResourceError: return "ResourceError";
|
|
||||||
case QMediaPlayer::Error::FormatError: return "FormatError";
|
|
||||||
case QMediaPlayer::Error::NetworkError: return "NetworkError";
|
|
||||||
case QMediaPlayer::Error::AccessDeniedError: return "AccessDeniedError";
|
|
||||||
}
|
|
||||||
|
|
||||||
return unknown;
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
template <>
|
|
||||||
void fmt_class_string<QMediaPlayer::MediaStatus>::format(std::string& out, u64 arg)
|
|
||||||
{
|
|
||||||
format_enum(out, arg, [](QMediaPlayer::MediaStatus value)
|
|
||||||
{
|
|
||||||
switch (value)
|
|
||||||
{
|
|
||||||
case QMediaPlayer::MediaStatus::NoMedia: return "NoMedia";
|
|
||||||
case QMediaPlayer::MediaStatus::LoadingMedia: return "LoadingMedia";
|
|
||||||
case QMediaPlayer::MediaStatus::LoadedMedia: return "LoadedMedia";
|
|
||||||
case QMediaPlayer::MediaStatus::StalledMedia: return "StalledMedia";
|
|
||||||
case QMediaPlayer::MediaStatus::BufferingMedia: return "BufferingMedia";
|
|
||||||
case QMediaPlayer::MediaStatus::BufferedMedia: return "BufferedMedia";
|
|
||||||
case QMediaPlayer::MediaStatus::EndOfMedia: return "EndOfMedia";
|
|
||||||
case QMediaPlayer::MediaStatus::InvalidMedia: return "InvalidMedia";
|
|
||||||
}
|
|
||||||
|
|
||||||
return unknown;
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
template <>
|
|
||||||
void fmt_class_string<QMediaPlayer::PlaybackState>::format(std::string& out, u64 arg)
|
|
||||||
{
|
|
||||||
format_enum(out, arg, [](QMediaPlayer::PlaybackState value)
|
|
||||||
{
|
|
||||||
switch (value)
|
|
||||||
{
|
|
||||||
case QMediaPlayer::PlaybackState::StoppedState: return "StoppedState";
|
|
||||||
case QMediaPlayer::PlaybackState::PlayingState: return "PlayingState";
|
|
||||||
case QMediaPlayer::PlaybackState::PausedState: return "PausedState";
|
|
||||||
}
|
|
||||||
|
|
||||||
return unknown;
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
qt_music_error_handler::qt_music_error_handler(std::shared_ptr<QMediaPlayer> media_player, std::function<void(QMediaPlayer::MediaStatus)> status_callback)
|
|
||||||
: m_media_player(std::move(media_player))
|
|
||||||
, m_status_callback(std::move(status_callback))
|
|
||||||
{
|
|
||||||
if (m_media_player)
|
|
||||||
{
|
|
||||||
connect(m_media_player.get(), &QMediaPlayer::mediaStatusChanged, this, &qt_music_error_handler::handle_media_status);
|
|
||||||
connect(m_media_player.get(), &QMediaPlayer::playbackStateChanged, this, &qt_music_error_handler::handle_music_state);
|
|
||||||
connect(m_media_player.get(), &QMediaPlayer::errorOccurred, this, &qt_music_error_handler::handle_music_error);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
qt_music_error_handler::~qt_music_error_handler()
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
void qt_music_error_handler::handle_media_status(QMediaPlayer::MediaStatus status)
|
|
||||||
{
|
|
||||||
music_log.notice("New media status: %s (status=%d)", status, static_cast<int>(status));
|
|
||||||
|
|
||||||
if (m_status_callback)
|
|
||||||
{
|
|
||||||
m_status_callback(status);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void qt_music_error_handler::handle_music_state(QMediaPlayer::PlaybackState state)
|
|
||||||
{
|
|
||||||
music_log.notice("New playback state: %s (state=%d)", state, static_cast<int>(state));
|
|
||||||
}
|
|
||||||
|
|
||||||
void qt_music_error_handler::handle_music_error(QMediaPlayer::Error error, const QString& errorString)
|
|
||||||
{
|
|
||||||
music_log.error("Error event: \"%s\" (error=%s)", errorString, error);
|
|
||||||
}
|
|
|
@ -1,22 +0,0 @@
|
||||||
#pragma once
|
|
||||||
|
|
||||||
#include <QObject>
|
|
||||||
#include <QMediaPlayer>
|
|
||||||
|
|
||||||
class qt_music_error_handler : public QObject
|
|
||||||
{
|
|
||||||
Q_OBJECT
|
|
||||||
|
|
||||||
public:
|
|
||||||
qt_music_error_handler(std::shared_ptr<QMediaPlayer> media_player, std::function<void(QMediaPlayer::MediaStatus)> status_callback);
|
|
||||||
virtual ~qt_music_error_handler();
|
|
||||||
|
|
||||||
private Q_SLOTS:
|
|
||||||
void handle_media_status(QMediaPlayer::MediaStatus status);
|
|
||||||
void handle_music_state(QMediaPlayer::PlaybackState state);
|
|
||||||
void handle_music_error(QMediaPlayer::Error error, const QString& errorString);
|
|
||||||
|
|
||||||
private:
|
|
||||||
std::shared_ptr<QMediaPlayer> m_media_player;
|
|
||||||
std::function<void(QMediaPlayer::MediaStatus)> m_status_callback = nullptr;
|
|
||||||
};
|
|
|
@ -1,7 +1,6 @@
|
||||||
#include "qt_music_handler.h"
|
#include "qt_music_handler.h"
|
||||||
#include "Emu/Cell/Modules/cellMusic.h"
|
#include "Emu/Cell/Modules/cellMusic.h"
|
||||||
#include "Emu/System.h"
|
#include "Emu/System.h"
|
||||||
#include "Utilities/Thread.h"
|
|
||||||
#include "util/logs.hpp"
|
#include "util/logs.hpp"
|
||||||
|
|
||||||
#include <QAudioOutput>
|
#include <QAudioOutput>
|
||||||
|
@ -9,6 +8,61 @@
|
||||||
|
|
||||||
LOG_CHANNEL(music_log, "Music");
|
LOG_CHANNEL(music_log, "Music");
|
||||||
|
|
||||||
|
template <>
|
||||||
|
void fmt_class_string<QMediaPlayer::Error>::format(std::string& out, u64 arg)
|
||||||
|
{
|
||||||
|
format_enum(out, arg, [](QMediaPlayer::Error value)
|
||||||
|
{
|
||||||
|
switch (value)
|
||||||
|
{
|
||||||
|
case QMediaPlayer::Error::NoError: return "NoError";
|
||||||
|
case QMediaPlayer::Error::ResourceError: return "ResourceError";
|
||||||
|
case QMediaPlayer::Error::FormatError: return "FormatError";
|
||||||
|
case QMediaPlayer::Error::NetworkError: return "NetworkError";
|
||||||
|
case QMediaPlayer::Error::AccessDeniedError: return "AccessDeniedError";
|
||||||
|
}
|
||||||
|
|
||||||
|
return unknown;
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
template <>
|
||||||
|
void fmt_class_string<QMediaPlayer::MediaStatus>::format(std::string& out, u64 arg)
|
||||||
|
{
|
||||||
|
format_enum(out, arg, [](QMediaPlayer::MediaStatus value)
|
||||||
|
{
|
||||||
|
switch (value)
|
||||||
|
{
|
||||||
|
case QMediaPlayer::MediaStatus::NoMedia: return "NoMedia";
|
||||||
|
case QMediaPlayer::MediaStatus::LoadingMedia: return "LoadingMedia";
|
||||||
|
case QMediaPlayer::MediaStatus::LoadedMedia: return "LoadedMedia";
|
||||||
|
case QMediaPlayer::MediaStatus::StalledMedia: return "StalledMedia";
|
||||||
|
case QMediaPlayer::MediaStatus::BufferingMedia: return "BufferingMedia";
|
||||||
|
case QMediaPlayer::MediaStatus::BufferedMedia: return "BufferedMedia";
|
||||||
|
case QMediaPlayer::MediaStatus::EndOfMedia: return "EndOfMedia";
|
||||||
|
case QMediaPlayer::MediaStatus::InvalidMedia: return "InvalidMedia";
|
||||||
|
}
|
||||||
|
|
||||||
|
return unknown;
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
template <>
|
||||||
|
void fmt_class_string<QMediaPlayer::PlaybackState>::format(std::string& out, u64 arg)
|
||||||
|
{
|
||||||
|
format_enum(out, arg, [](QMediaPlayer::PlaybackState value)
|
||||||
|
{
|
||||||
|
switch (value)
|
||||||
|
{
|
||||||
|
case QMediaPlayer::PlaybackState::StoppedState: return "StoppedState";
|
||||||
|
case QMediaPlayer::PlaybackState::PlayingState: return "PlayingState";
|
||||||
|
case QMediaPlayer::PlaybackState::PausedState: return "PausedState";
|
||||||
|
}
|
||||||
|
|
||||||
|
return unknown;
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
qt_music_handler::qt_music_handler()
|
qt_music_handler::qt_music_handler()
|
||||||
{
|
{
|
||||||
music_log.notice("Constructing Qt music handler...");
|
music_log.notice("Constructing Qt music handler...");
|
||||||
|
@ -16,32 +70,9 @@ qt_music_handler::qt_music_handler()
|
||||||
m_media_player = std::make_shared<QMediaPlayer>();
|
m_media_player = std::make_shared<QMediaPlayer>();
|
||||||
m_media_player->setAudioOutput(new QAudioOutput());
|
m_media_player->setAudioOutput(new QAudioOutput());
|
||||||
|
|
||||||
m_error_handler = std::make_unique<qt_music_error_handler>(m_media_player,
|
connect(m_media_player.get(), &QMediaPlayer::mediaStatusChanged, this, &qt_music_handler::handle_media_status);
|
||||||
[this](QMediaPlayer::MediaStatus status)
|
connect(m_media_player.get(), &QMediaPlayer::playbackStateChanged, this, &qt_music_handler::handle_music_state);
|
||||||
{
|
connect(m_media_player.get(), &QMediaPlayer::errorOccurred, this, &qt_music_handler::handle_music_error);
|
||||||
if (!m_status_callback)
|
|
||||||
{
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
switch (status)
|
|
||||||
{
|
|
||||||
case QMediaPlayer::MediaStatus::NoMedia:
|
|
||||||
case QMediaPlayer::MediaStatus::LoadingMedia:
|
|
||||||
case QMediaPlayer::MediaStatus::LoadedMedia:
|
|
||||||
case QMediaPlayer::MediaStatus::StalledMedia:
|
|
||||||
case QMediaPlayer::MediaStatus::BufferingMedia:
|
|
||||||
case QMediaPlayer::MediaStatus::BufferedMedia:
|
|
||||||
case QMediaPlayer::MediaStatus::InvalidMedia:
|
|
||||||
break;
|
|
||||||
case QMediaPlayer::MediaStatus::EndOfMedia:
|
|
||||||
m_status_callback(player_status::end_of_media);
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
music_log.error("Ignoring unknown status %d", static_cast<int>(status));
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
|
|
||||||
qt_music_handler::~qt_music_handler()
|
qt_music_handler::~qt_music_handler()
|
||||||
|
@ -51,7 +82,6 @@ qt_music_handler::~qt_music_handler()
|
||||||
music_log.notice("Destroying Qt music handler...");
|
music_log.notice("Destroying Qt music handler...");
|
||||||
m_media_player->stop();
|
m_media_player->stop();
|
||||||
m_media_player.reset();
|
m_media_player.reset();
|
||||||
m_error_handler.reset();
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -166,3 +196,41 @@ f32 qt_music_handler::get_volume() const
|
||||||
|
|
||||||
return volume;
|
return volume;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void qt_music_handler::handle_media_status(QMediaPlayer::MediaStatus status)
|
||||||
|
{
|
||||||
|
music_log.notice("New media status: %s (status=%d)", status, static_cast<int>(status));
|
||||||
|
|
||||||
|
if (!m_status_callback)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
switch (status)
|
||||||
|
{
|
||||||
|
case QMediaPlayer::MediaStatus::NoMedia:
|
||||||
|
case QMediaPlayer::MediaStatus::LoadingMedia:
|
||||||
|
case QMediaPlayer::MediaStatus::LoadedMedia:
|
||||||
|
case QMediaPlayer::MediaStatus::StalledMedia:
|
||||||
|
case QMediaPlayer::MediaStatus::BufferingMedia:
|
||||||
|
case QMediaPlayer::MediaStatus::BufferedMedia:
|
||||||
|
case QMediaPlayer::MediaStatus::InvalidMedia:
|
||||||
|
break;
|
||||||
|
case QMediaPlayer::MediaStatus::EndOfMedia:
|
||||||
|
m_status_callback(player_status::end_of_media);
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
music_log.error("Ignoring unknown status %d", static_cast<int>(status));
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void qt_music_handler::handle_music_state(QMediaPlayer::PlaybackState state)
|
||||||
|
{
|
||||||
|
music_log.notice("New playback state: %s (state=%d)", state, static_cast<int>(state));
|
||||||
|
}
|
||||||
|
|
||||||
|
void qt_music_handler::handle_music_error(QMediaPlayer::Error error, const QString& errorString)
|
||||||
|
{
|
||||||
|
music_log.error("Error event: \"%s\" (error=%s)", errorString, error);
|
||||||
|
}
|
||||||
|
|
|
@ -1,13 +1,15 @@
|
||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
#include "Emu/Io/music_handler_base.h"
|
#include "Emu/Io/music_handler_base.h"
|
||||||
#include "qt_music_error_handler.h"
|
|
||||||
|
|
||||||
#include <QMediaPlayer>
|
#include <QMediaPlayer>
|
||||||
|
#include <QObject>
|
||||||
#include <mutex>
|
#include <mutex>
|
||||||
|
|
||||||
class qt_music_handler final : public music_handler_base
|
class qt_music_handler final : public QObject, public music_handler_base
|
||||||
{
|
{
|
||||||
|
Q_OBJECT
|
||||||
|
|
||||||
public:
|
public:
|
||||||
qt_music_handler();
|
qt_music_handler();
|
||||||
virtual ~qt_music_handler();
|
virtual ~qt_music_handler();
|
||||||
|
@ -20,9 +22,13 @@ public:
|
||||||
void set_volume(f32 volume) override;
|
void set_volume(f32 volume) override;
|
||||||
f32 get_volume() const override;
|
f32 get_volume() const override;
|
||||||
|
|
||||||
|
private Q_SLOTS:
|
||||||
|
void handle_media_status(QMediaPlayer::MediaStatus status);
|
||||||
|
void handle_music_state(QMediaPlayer::PlaybackState state);
|
||||||
|
void handle_music_error(QMediaPlayer::Error error, const QString& errorString);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
mutable std::mutex m_mutex;
|
mutable std::mutex m_mutex;
|
||||||
std::unique_ptr<qt_music_error_handler> m_error_handler;
|
|
||||||
std::shared_ptr<QMediaPlayer> m_media_player;
|
std::shared_ptr<QMediaPlayer> m_media_player;
|
||||||
std::string m_path;
|
std::string m_path;
|
||||||
};
|
};
|
||||||
|
|
Loading…
Reference in New Issue