summaryrefslogtreecommitdiff
path: root/src/xine-engine/xine_internal.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/xine-engine/xine_internal.h')
-rw-r--r--src/xine-engine/xine_internal.h46
1 files changed, 43 insertions, 3 deletions
diff --git a/src/xine-engine/xine_internal.h b/src/xine-engine/xine_internal.h
index 9fa9c2f26..fb70f8cd6 100644
--- a/src/xine-engine/xine_internal.h
+++ b/src/xine-engine/xine_internal.h
@@ -17,7 +17,7 @@
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
*
- * $Id: xine_internal.h,v 1.29 2001/07/14 13:28:32 guenter Exp $
+ * $Id: xine_internal.h,v 1.30 2001/07/14 23:17:37 richwareham Exp $
*
*/
@@ -32,6 +32,7 @@
#include "metronom.h"
#include "spu_decoder.h"
#include "libspudec/spu_decoder_api.h"
+#include "events.h"
#define INPUT_PLUGIN_MAX 50
#define DEMUXER_PLUGIN_MAX 50
@@ -39,6 +40,7 @@
#define DECODER_PLUGIN_IFACE_VERSION 1
#define AUDIO_OUT_PLUGIN_MAX 50
#define VIDEO_OUT_PLUGIN_MAX 50
+#define XINE_MAX_EVENT_LISTENERS 50
/*
* generic xine video decoder plugin interface
@@ -109,7 +111,10 @@ typedef void (*gui_stream_end_cb_t)(int nStatus);
#define XINE_PAUSE 2
#define XINE_QUIT 3
-typedef struct xine_s {
+typedef struct xine_s xine_t;
+typedef void (*event_listener_t) (xine_t *xine, event_t *event, void *data);
+
+struct xine_s {
/* private : */
@@ -166,7 +171,11 @@ typedef struct xine_s {
/* Lock for xine player functions */
pthread_mutex_t xine_lock;
-} xine_t;
+ /* Array of event handlers. */
+ event_listener_t event_listeners[XINE_MAX_EVENT_LISTENERS];
+ uint16_t num_event_listeners;
+
+};
/*
* read config file and init a config object
@@ -417,4 +426,35 @@ char **xine_list_audio_output_plugins ();
ao_functions_t *xine_load_audio_output_plugin(config_values_t *config, char *id);
+/**
+ * @defgroup eventgroup Sending events
+ * Event dispatcher mechanism
+ * @{
+ */
+
+/**
+ * \fn xine_register_event_listener(event_listener_t *listener)
+ * \brief registers an event listener callback.
+ * \return 0 if the listener was registerd, non-zero if it could not.
+ */
+
+int xine_register_event_listener(xine_t *this, event_listener_t *listener);
+
+/**
+ * \fn xine_remove_event_listener(event_listener_t *listener)
+ * \brief Attempts to remove a registered event listener.
+ * \return 0 if the listener was removes, non-zero if it wasn't (e.g. not found).
+ */
+
+int xine_remove_event_listener(xine_t *this, event_listener_t *listener);
+
+/**
+ * \fn xine_send_event(event_t *event)
+ * \brief sends an event to all listeners.
+ */
+
+void xine_send_event(xine_t *this, event_t *event, void *data);
+
+/** @} end of eventgroup */
+
#endif