summaryrefslogtreecommitdiff
path: root/apps
diff options
context:
space:
mode:
authorJens Arnold <amiconn@rockbox.org>2004-10-12 22:45:01 +0000
committerJens Arnold <amiconn@rockbox.org>2004-10-12 22:45:01 +0000
commit0dc52d5c362a6f416ca57f0afdbac49dc8824af2 (patch)
treeb34409540f7f5f30a5da6cc14d21d43dfa4f497a /apps
parenta7aa17ac1b83d7855c896f6937887cc8fcaa959a (diff)
downloadrockbox-0dc52d5c362a6f416ca57f0afdbac49dc8824af2.zip
rockbox-0dc52d5c362a6f416ca57f0afdbac49dc8824af2.tar.gz
rockbox-0dc52d5c362a6f416ca57f0afdbac49dc8824af2.tar.bz2
rockbox-0dc52d5c362a6f416ca57f0afdbac49dc8824af2.tar.xz
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
Diffstat (limited to 'apps')
-rw-r--r--apps/misc.c12
-rw-r--r--apps/misc.h1
-rw-r--r--apps/plugin.c1
-rw-r--r--apps/plugin.h15
4 files changed, 21 insertions, 8 deletions
diff --git a/apps/misc.c b/apps/misc.c
index 5be6264..f632ecc 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 9588886..e312248 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 af67702..bf71aa1 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 52a060d..96c4f6f 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) */