send iap status change notifications
rockbox-gerrit-noreply--- via rockbox-cvs <[email protected]> Sun, 3 May 2026 14:21:04 -0400
| Newsgroups | gmane.comp.systems.archos.rockbox.cvs |
|---|---|
| Message-ID | <[email protected]> |
commit fad99773e3942e07ac53949d26a6505d2e67792a Author: mojyack <[email protected]> Date: Fri Dec 12 15:49:01 2025 +0900 send iap status change notifications install iap event notification callbacks in various locations Change-Id: I637a3ad18cb07ca056ad9b678400ba11d2f8faad diff --git a/apps/bookmark.c b/apps/bookmark.c index f00ace7c41..d7fe0b29b1 100644 --- a/apps/bookmark.c +++ b/apps/bookmark.c @@ -43,6 +43,7 @@ #include "file.h" #include "pathfuncs.h" #include "playlist_menu.h" +#include "iap-usb.h" /*#define LOGF_ENABLE*/ #include "logf.h" @@ -1125,7 +1126,9 @@ static bool play_bookmark(const char* bookmark) if (parse_bookmark(fnamebuf, sizeof(fnamebuf), bookmark, &resume_info, true)) { global_settings.repeat_mode = resume_info.repeat_mode; + iap_on_repeat_state(global_settings.repeat_mode); global_settings.playlist_shuffle = resume_info.shuffle; + iap_on_shuffle_state(global_settings.playlist_shuffle); #if defined(HAVE_PITCHCONTROL) sound_set_pitch(resume_info.pitch); dsp_set_timestretch(resume_info.speed); diff --git a/apps/gui/skin_engine/skin_touchsupport.c b/apps/gui/skin_engine/skin_touchsupport.c index eaa71c9b70..7098d8aa05 100644 --- a/apps/gui/skin_engine/skin_touchsupport.c +++ b/apps/gui/skin_engine/skin_touchsupport.c @@ -34,6 +34,7 @@ #include "playlist.h" #include "dsp_misc.h" #include "playback.h" +#include "iap-usb.h" /** Disarms all touchregions. */ void skin_disarm_touchregions(struct gui_wps *gwps) @@ -344,6 +345,7 @@ int skin_get_touchaction(struct gui_wps *gwps, int* edge_offset) case ACTION_TOUCH_SHUFFLE: global_settings.playlist_shuffle = !global_settings.playlist_shuffle; + iap_on_shuffle_state(global_settings.playlist_shuffle); replaygain_update(); if (global_settings.playlist_shuffle) playlist_randomise(NULL, current_tick, true); @@ -358,6 +360,7 @@ int skin_get_touchaction(struct gui_wps *gwps, int* edge_offset) const struct settings_list *rep_setting = find_setting(&global_settings.repeat_mode); option_select_next_val(rep_setting, false, true); + iap_on_repeat_state(global_settings.repeat_mode); audio_flush_and_reload_tracks(); action = ACTION_REDRAW; } break; diff --git a/apps/misc.c b/apps/misc.c index a44f106fb9..1780ccd9fe 100644 --- a/apps/misc.c +++ b/apps/misc.c @@ -29,6 +29,7 @@ #include "system.h" #include "lcd.h" #include "language.h" /* is_lang_rtl() */ +#include "iap-usb.h" #ifdef HAVE_DIRCACHE #include "dircache.h" @@ -870,6 +871,7 @@ void check_bootfile(bool do_rolo) void setvol(void) { sound_set_volume(global_status.volume); + iap_on_volume(global_status.volume); global_status.last_volume_change = current_tick; status_save(false); } diff --git a/apps/playback.c b/apps/playback.c index ef991ea52e..6a7e764248 100644 --- a/apps/playback.c +++ b/apps/playback.c @@ -48,6 +48,7 @@ #include "settings.h" #include "audiohw.h" #include "general.h" +#include "iap-usb.h" #include <stdio.h> #ifdef HAVE_TAGCACHE @@ -1411,6 +1412,7 @@ static void audio_playlist_track_change(void) { send_track_event(PLAYBACK_EVENT_TRACK_CHANGE, track_event_flags, id3); + iap_on_track_playback_index(playlist_get_display_index() - 1, false); } position_key = pcmbuf_get_position_key(); @@ -2319,6 +2321,8 @@ static int audio_finish_load_track(struct track_info *infop) by the time PLAYBACK_EVENT_TRACK_CHANGE is sent */ send_track_event(PLAYBACK_EVENT_CUR_TRACK_READY, 0, id3_get(PLAYING_ID3)); + /* Also send pending notification */ + iap_on_track_playback_index(playlist_get_display_index() - 1, true); } #ifdef HAVE_CODEC_BUFFERING @@ -2746,6 +2750,7 @@ static void audio_finalise_track_change(void) if (pause_on_track_change || single_mode_do_pause(info.id3_hid)) { play_status = PLAY_PAUSED; + iap_on_play_status(play_status); pcmbuf_pause(true); pause_on_track_change = false; } @@ -3079,6 +3084,7 @@ static void audio_start_playback(const struct audio_resume_info *resume_info, /* Update our state */ play_status = PLAY_PLAYING; + iap_on_play_status(play_status); } /* Codec's position should be available as soon as it knows it */ @@ -3166,6 +3172,7 @@ static void audio_stop_playback(void) /* Update our state */ ff_rw_mode = false; play_status = PLAY_STOPPED; + iap_on_play_status(play_status); wipe_track_metadata(true); #ifdef HAVE_ALBUMART @@ -3187,6 +3194,7 @@ static void audio_on_pause(bool pause) return; play_status = pause ? PLAY_PAUSED : PLAY_PLAYING; + iap_on_play_status(play_status); if (!pause && codec_skip_pending) { @@ -3828,6 +3836,7 @@ void audio_pcmbuf_position_callback(unsigned long elapsed, off_t offset, struct mp3entry *id3 = id3_get(PLAYING_ID3); id3->elapsed = elapsed; id3->offset = offset; + iap_on_track_time_position(elapsed); } } diff --git a/apps/playlist.c b/apps/playlist.c index c30b323f87..198e2baa01 100644 --- a/apps/playlist.c +++ b/apps/playlist.c @@ -107,6 +107,7 @@ #include "rbunicode.h" #include "root_menu.h" #include "plugin.h" /* To borrow a temp buffer to rewrite a .m3u8 file */ +#include "iap-usb.h" #include "logdiskf.h" #ifdef HAVE_DIRCACHE #include "dircache.h" @@ -1217,6 +1218,8 @@ static int remove_all_tracks_unlocked(struct playlist_info *playlist) playlist->amount = 1; playlist->indices[0] |= PLAYLIST_QUEUED; playlist->flags = 0; /* Reset dirplay and modified flags */ + if (playlist == ¤t_playlist) + iap_on_tracks_count(playlist->amount); if (playlist->last_insert_pos == 0) playlist->last_insert_pos = -1; @@ -1424,6 +1427,8 @@ static int add_track_to_playlist_unlocked(struct playlist_info* playlist, dc_init_filerefs(playlist, insert_position, 1); playlist->amount++; + if (playlist == ¤t_playlist) + iap_on_tracks_count(playlist->amount); return insert_position; } @@ -1506,6 +1511,9 @@ static void find_and_set_playlist_index_unlocked(struct playlist_info* playlist, { playlist->index = playlist->first_index = i; + if (playlist == ¤t_playlist) + iap_on_track_playback_index(rotate_index(playlist, playlist->index), true); + break; } } @@ -2949,6 +2957,7 @@ int playlist_next(int steps) sort_playlist_unlocked(playlist, false, false); randomise_playlist_unlocked(playlist, current_tick, false, true); global_settings.playlist_shuffle = true; + iap_on_shuffle_state(global_settings.playlist_shuffle); playlist->started = true; playlist->index = 0; @@ -3537,8 +3546,9 @@ int playlist_resume(void) } } - if (global_status.resume_index != -1) + if (global_status.resume_index != -1) { playlist->index = global_status.resume_index; + } out: playlist_write_unlock(playlist); @@ -4047,8 +4057,10 @@ static int pl_save_update_control(struct playlist_info* playlist, /* Reset shuffle seed */ playlist->seed = 0; - if (playlist == ¤t_playlist) + if (playlist == ¤t_playlist) { global_settings.playlist_shuffle = false; + iap_on_shuffle_state(global_settings.playlist_shuffle); + } pl_close_control(playlist); close(old_fd); diff --git a/apps/settings_list.c b/apps/settings_list.c index e8508ab099..7601cf66ca 100644 --- a/apps/settings_list.c +++ b/apps/settings_list.c @@ -67,6 +67,7 @@ #endif #include "playlist.h" #include "tree.h" +#include "iap-usb.h" #include "voice_thread.h" @@ -790,15 +791,17 @@ static void shuffle_playlist_callback(bool shuffle) } } } + iap_on_shuffle_state(shuffle); } static void repeat_mode_callback(int repeat) { + (void)repeat; if ((audio_status() & AUDIO_STATUS_PLAY) == AUDIO_STATUS_PLAY) { audio_flush_and_reload_tracks(); } - (void)repeat; + iap_on_repeat_state(repeat); } static void treesort_callback(int value) diff --git a/firmware/usbstack/usb_core.c b/firmware/usbstack/usb_core.c index bd8e3eaa58..2a10c36c7e 100644 --- a/firmware/usbstack/usb_core.c +++ b/firmware/usbstack/usb_core.c @@ -333,6 +333,7 @@ static struct usb_class_driver drivers[USB_NUM_DRIVERS] = #endif .set_interface = usb_iap_set_interface, .get_interface = usb_iap_get_interface, + .notify_event = usb_iap_notify_event, }, #endif }; -- rockbox-cvs mailing list [email protected] https://lists.haxx.se/mailman/listinfo/rockbox-cvs