mirror of
https://github.com/RPCS3/rpcs3.git
synced 2025-07-07 15:31:26 +12:00
merge qt_music_error_handler into qt_music_handler
This commit is contained in:
parent
86f86f516a
commit
587d0b2c36
7 changed files with 112 additions and 164 deletions
|
@ -1,7 +1,6 @@
|
|||
#include "qt_music_handler.h"
|
||||
#include "Emu/Cell/Modules/cellMusic.h"
|
||||
#include "Emu/System.h"
|
||||
#include "Utilities/Thread.h"
|
||||
#include "util/logs.hpp"
|
||||
|
||||
#include <QAudioOutput>
|
||||
|
@ -9,6 +8,61 @@
|
|||
|
||||
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()
|
||||
{
|
||||
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->setAudioOutput(new QAudioOutput());
|
||||
|
||||
m_error_handler = std::make_unique<qt_music_error_handler>(m_media_player,
|
||||
[this](QMediaPlayer::MediaStatus 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;
|
||||
}
|
||||
});
|
||||
connect(m_media_player.get(), &QMediaPlayer::mediaStatusChanged, this, &qt_music_handler::handle_media_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);
|
||||
}
|
||||
|
||||
qt_music_handler::~qt_music_handler()
|
||||
|
@ -51,7 +82,6 @@ qt_music_handler::~qt_music_handler()
|
|||
music_log.notice("Destroying Qt music handler...");
|
||||
m_media_player->stop();
|
||||
m_media_player.reset();
|
||||
m_error_handler.reset();
|
||||
});
|
||||
}
|
||||
|
||||
|
@ -166,3 +196,41 @@ f32 qt_music_handler::get_volume() const
|
|||
|
||||
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);
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue