[Kernel/XMP] Send correct notification when playback controller is changed
- Changed locked into playback_client enumerator - Changed vague notification name to something more descriptive
This commit is contained in:
@@ -21,11 +21,11 @@ namespace apps {
|
|||||||
XmpApp::XmpApp(KernelState* kernel_state)
|
XmpApp::XmpApp(KernelState* kernel_state)
|
||||||
: App(kernel_state, 0xFA),
|
: App(kernel_state, 0xFA),
|
||||||
state_(State::kIdle),
|
state_(State::kIdle),
|
||||||
disabled_(0),
|
playback_client_(PlaybackClient::kTitle),
|
||||||
playback_mode_(PlaybackMode::kUnknown),
|
playback_mode_(PlaybackMode::kUnknown),
|
||||||
repeat_mode_(RepeatMode::kUnknown),
|
repeat_mode_(RepeatMode::kUnknown),
|
||||||
unknown_flags_(0),
|
unknown_flags_(0),
|
||||||
volume_(0.0f),
|
volume_(1.0f),
|
||||||
active_playlist_(nullptr),
|
active_playlist_(nullptr),
|
||||||
active_song_index_(0),
|
active_song_index_(0),
|
||||||
next_playlist_handle_(1),
|
next_playlist_handle_(1),
|
||||||
@@ -131,9 +131,8 @@ X_HRESULT XmpApp::XMPPlayTitlePlaylist(uint32_t playlist_handle,
|
|||||||
playlist = it->second;
|
playlist = it->second;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (disabled_) {
|
if (playback_client_ == PlaybackClient::kSystem) {
|
||||||
// Ignored because we aren't enabled?
|
XELOGW("XMPPlayTitlePlaylist: System playback is enabled!");
|
||||||
XELOGW("Ignoring XMPPlayTitlePlaylist because disabled");
|
|
||||||
return X_E_SUCCESS;
|
return X_E_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -395,7 +394,7 @@ X_HRESULT XmpApp::DispatchMessageSync(uint32_t message, uint32_t buffer_ptr,
|
|||||||
struct {
|
struct {
|
||||||
xe::be<uint32_t> xmp_client;
|
xe::be<uint32_t> xmp_client;
|
||||||
xe::be<uint32_t> controller;
|
xe::be<uint32_t> controller;
|
||||||
xe::be<uint32_t> locked;
|
xe::be<uint32_t> playback_client;
|
||||||
}* args = memory_->TranslateVirtual<decltype(args)>(buffer_ptr);
|
}* args = memory_->TranslateVirtual<decltype(args)>(buffer_ptr);
|
||||||
static_assert_size(decltype(*args), 12);
|
static_assert_size(decltype(*args), 12);
|
||||||
|
|
||||||
@@ -403,10 +402,11 @@ X_HRESULT XmpApp::DispatchMessageSync(uint32_t message, uint32_t buffer_ptr,
|
|||||||
(args->xmp_client == 0x00000002 && args->controller == 0x00000000) ||
|
(args->xmp_client == 0x00000002 && args->controller == 0x00000000) ||
|
||||||
(args->xmp_client == 0x00000000 && args->controller == 0x00000001));
|
(args->xmp_client == 0x00000000 && args->controller == 0x00000001));
|
||||||
XELOGD("XMPSetPlaybackController({:08X}, {:08X})",
|
XELOGD("XMPSetPlaybackController({:08X}, {:08X})",
|
||||||
uint32_t(args->controller), uint32_t(args->locked));
|
uint32_t(args->controller), uint32_t(args->playback_client));
|
||||||
|
|
||||||
disabled_ = args->locked;
|
playback_client_ = PlaybackClient(uint32_t(args->playback_client));
|
||||||
kernel_state_->BroadcastNotification(kMsgDisableChanged, disabled_);
|
kernel_state_->BroadcastNotification(kMsgPlaybackControllerChanged,
|
||||||
|
!args->playback_client);
|
||||||
return X_E_SUCCESS;
|
return X_E_SUCCESS;
|
||||||
}
|
}
|
||||||
case 0x0007001B: {
|
case 0x0007001B: {
|
||||||
|
|||||||
@@ -34,6 +34,10 @@ class XmpApp : public App {
|
|||||||
kPlaying = 1,
|
kPlaying = 1,
|
||||||
kPaused = 2,
|
kPaused = 2,
|
||||||
};
|
};
|
||||||
|
enum class PlaybackClient : uint32_t {
|
||||||
|
kSystem = 0,
|
||||||
|
kTitle = 1,
|
||||||
|
};
|
||||||
enum class PlaybackMode : uint32_t {
|
enum class PlaybackMode : uint32_t {
|
||||||
// kInOrder = ?,
|
// kInOrder = ?,
|
||||||
kUnknown = 0,
|
kUnknown = 0,
|
||||||
@@ -90,12 +94,12 @@ class XmpApp : public App {
|
|||||||
private:
|
private:
|
||||||
static const uint32_t kMsgStateChanged = 0x0A000001;
|
static const uint32_t kMsgStateChanged = 0x0A000001;
|
||||||
static const uint32_t kMsgPlaybackBehaviorChanged = 0x0A000002;
|
static const uint32_t kMsgPlaybackBehaviorChanged = 0x0A000002;
|
||||||
static const uint32_t kMsgDisableChanged = 0x0A000003;
|
static const uint32_t kMsgPlaybackControllerChanged = 0x0A000003;
|
||||||
|
|
||||||
void OnStateChanged();
|
void OnStateChanged();
|
||||||
|
|
||||||
State state_;
|
State state_;
|
||||||
uint32_t disabled_;
|
PlaybackClient playback_client_;
|
||||||
PlaybackMode playback_mode_;
|
PlaybackMode playback_mode_;
|
||||||
RepeatMode repeat_mode_;
|
RepeatMode repeat_mode_;
|
||||||
uint32_t unknown_flags_;
|
uint32_t unknown_flags_;
|
||||||
|
|||||||
Reference in New Issue
Block a user