diff options
author | Guenter Bartsch <guenter@users.sourceforge.net> | 2001-10-20 02:01:51 +0000 |
---|---|---|
committer | Guenter Bartsch <guenter@users.sourceforge.net> | 2001-10-20 02:01:51 +0000 |
commit | 439907def64a3bdbc3fd6a73af623c6fb7a55497 (patch) | |
tree | b1fbbec16558d5dd7b882682359d91cec19f9611 /src/xine-engine/events.c | |
parent | fc4c873cd43fbac488f56041e38a5010e2656b10 (diff) | |
download | xine-lib-439907def64a3bdbc3fd6a73af623c6fb7a55497.tar.gz xine-lib-439907def64a3bdbc3fd6a73af623c6fb7a55497.tar.bz2 |
big event cleanup: one single mechanism is now used for all communications between gui, plugins and the xine engine; code cleanup
CVS patchset: 837
CVS date: 2001/10/20 02:01:51
Diffstat (limited to 'src/xine-engine/events.c')
-rw-r--r-- | src/xine-engine/events.c | 17 |
1 files changed, 12 insertions, 5 deletions
diff --git a/src/xine-engine/events.c b/src/xine-engine/events.c index 43768c631..5db72b59c 100644 --- a/src/xine-engine/events.c +++ b/src/xine-engine/events.c @@ -29,7 +29,8 @@ #include "xine_internal.h" -int xine_register_event_listener(xine_t *this, event_listener_t listener) { +int xine_register_event_listener(xine_t *this, xine_event_listener_t listener, + void *user_data) { /* Ensure the listener is non-NULL */ if(listener == NULL) { return 0; @@ -37,23 +38,28 @@ int xine_register_event_listener(xine_t *this, event_listener_t listener) { /* Check we hava a slot free */ if(this->num_event_listeners < XINE_MAX_EVENT_LISTENERS) { - this->event_listeners[this->num_event_listeners++] = listener; + + this->event_listeners[this->num_event_listeners] = listener; + this->event_listener_user_data[this->num_event_listeners] = user_data; + + this->num_event_listeners++; + return 1; } return 0; } -void xine_send_event(xine_t *this, event_t *event, void *data) { +void xine_send_event(xine_t *this, xine_event_t *event) { uint16_t i; /* Itterate through all event handlers */ for(i=0; i < this->num_event_listeners; i++) { - (this->event_listeners[i]) (this, event, data); + (this->event_listeners[i]) (this->event_listener_user_data[i], event); } } -int xine_remove_event_listener(xine_t *this, event_listener_t listener) { +int xine_remove_event_listener(xine_t *this, xine_event_listener_t listener) { uint16_t i, found; found = 1; i = 0; @@ -69,6 +75,7 @@ int xine_remove_event_listener(xine_t *this, event_listener_t listener) { /* If possible, move the last listener to the hole thats left */ if(this->num_event_listeners > 1) { this->event_listeners[i] = this->event_listeners[this->num_event_listeners - 1]; + this->event_listener_user_data[i] = this->event_listener_user_data[this->num_event_listeners - 1]; this->event_listeners[this->num_event_listeners - 1] = NULL; } |