From 0dc52d5c362a6f416ca57f0afdbac49dc8824af2 Mon Sep 17 00:00:00 2001 From: Jens Arnold Date: Tue, 12 Oct 2004 22:45:01 +0000 Subject: Extended default_event_handler() that calls a callback function prior to actually handling the event. git-svn-id: svn://svn.rockbox.org/rockbox/trunk@5263 a1c6a512-1295-4272-9138-f99709370657 --- apps/misc.c | 12 +++++++++++- apps/misc.h | 1 + apps/plugin.c | 1 + apps/plugin.h | 15 ++++++++------- 4 files changed, 21 insertions(+), 8 deletions(-) diff --git a/apps/misc.c b/apps/misc.c index 5be6264fdc..f632ecc7eb 100644 --- a/apps/misc.c +++ b/apps/misc.c @@ -230,20 +230,30 @@ bool clean_shutdown(void) return false; } -int default_event_handler(int event) +int default_event_handler_ex(int event, void (*callback)(void *), void *parameter) { switch(event) { case SYS_USB_CONNECTED: + if (callback != NULL) + callback(parameter); #ifdef HAVE_MMC if (!mmc_detect() || (mmc_remove_request() == SYS_MMC_EXTRACTED)) #endif usb_screen(); return SYS_USB_CONNECTED; case SYS_POWEROFF: + if (callback != NULL) + callback(parameter); if (!clean_shutdown()) return SYS_POWEROFF; break; } return 0; } + +int default_event_handler(int event) +{ + return default_event_handler_ex(event, NULL, NULL); +} + diff --git a/apps/misc.h b/apps/misc.h index 9588886b1d..e31224823d 100644 --- a/apps/misc.h +++ b/apps/misc.h @@ -40,6 +40,7 @@ void screen_dump(void); bool settings_parseline(char* line, char** name, char** value); bool clean_shutdown(void); +int default_event_handler_ex(int event, void (*callback)(void *), void *parameter); int default_event_handler(int event); #endif diff --git a/apps/plugin.c b/apps/plugin.c index af6770213d..bf71aa11e3 100644 --- a/apps/plugin.c +++ b/apps/plugin.c @@ -262,6 +262,7 @@ static const struct plugin_api rockbox_api = { #ifndef SIMULATOR system_memory_guard, #endif + default_event_handler_ex, }; int plugin_load(const char* plugin, void* parameter) diff --git a/apps/plugin.h b/apps/plugin.h index 52a060d428..96c4f6fe55 100644 --- a/apps/plugin.h +++ b/apps/plugin.h @@ -60,7 +60,7 @@ #endif /* increase this every time the api struct changes */ -#define PLUGIN_API_VERSION 27 +#define PLUGIN_API_VERSION 28 /* update this to latest version if a change to the api struct breaks backwards compatibility (and please take the opportunity to sort in any @@ -289,15 +289,16 @@ struct plugin_api { void (*lcd_puts_scroll_style)(int x, int y, const unsigned char* string, int style); #endif - void (*mpeg_flush_and_reload_tracks)(void); - int (*strncasecmp)(const char *s1, const char *s2, size_t n); - int (*mpeg_get_file_pos)(void); - unsigned long (*find_next_frame)(int fd, int *offset, + void (*mpeg_flush_and_reload_tracks)(void); + int (*strncasecmp)(const char *s1, const char *s2, size_t n); + int (*mpeg_get_file_pos)(void); + unsigned long (*find_next_frame)(int fd, int *offset, int max_offset, unsigned long last_header); - unsigned long (*mpeg_get_last_header)(void); + unsigned long (*mpeg_get_last_header)(void); #ifndef SIMULATOR - int (*system_memory_guard)(int newmode); + int (*system_memory_guard)(int newmode); #endif + int (*default_event_handler_ex)(int event, void (*callback)(void *), void *parameter); }; /* defined by the plugin loader (plugin.c) */ -- cgit v1.2.3