X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=include%2Fvlc_events.h;h=bca1b2a9e17344188ff1679fb24d0f3446a16396;hb=b4d7ab2bf417e6fc92f42d2228cdc134db19ef8a;hp=01baa940bc5968a9e23a8d7a20a69f4ab310495d;hpb=a779588f7212b9d6f34b61dfcb457b31d0153f3a;p=vlc diff --git a/include/vlc_events.h b/include/vlc_events.h index 01baa940bc..bca1b2a9e1 100644 --- a/include/vlc_events.h +++ b/include/vlc_events.h @@ -1,25 +1,25 @@ /***************************************************************************** - * events.h: events definitions + * vlc_events.h: events definitions * Interface used to send events. ***************************************************************************** - * Copyright (C) 2007 the VideoLAN team + * Copyright (C) 2007 VLC authors and VideoLAN * $Id$ * * Authors: Pierre d'Herbemont * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or + * This program is free software; you can redistribute it and/or modify it + * under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation; either version 2.1 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA. + * You should have received a copy of the GNU Lesser General Public License + * along with this program; if not, write to the Free Software Foundation, + * Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA. *****************************************************************************/ #ifndef VLC_EVENTS_H @@ -105,24 +105,37 @@ typedef struct vlc_event_manager_t void * p_obj; vlc_mutex_t object_lock; vlc_mutex_t event_sending_lock; - vlc_object_t *p_parent_object; DECL_ARRAY(struct vlc_event_listeners_group_t *) listeners_groups; } vlc_event_manager_t; /* List of event */ -/* Be sure to keep sync-ed with misc/events.c debug name table */ typedef enum vlc_event_type_t { + /* Input (thread) events */ + vlc_InputStateChanged, + vlc_InputSelectedStreamChanged, + /* Input item events */ vlc_InputItemMetaChanged, vlc_InputItemSubItemAdded, + vlc_InputItemSubItemTreeAdded, vlc_InputItemDurationChanged, vlc_InputItemPreparsedChanged, + vlc_InputItemNameChanged, + vlc_InputItemInfoChanged, + vlc_InputItemErrorWhenReadingChanged, + vlc_InputItemPreparseEnded, /* Service Discovery event */ vlc_ServicesDiscoveryItemAdded, vlc_ServicesDiscoveryItemRemoved, + vlc_ServicesDiscoveryItemRemoveAll, vlc_ServicesDiscoveryStarted, - vlc_ServicesDiscoveryEnded + vlc_ServicesDiscoveryEnded, + + /* Addons Manager events */ + vlc_AddonFound, + vlc_AddonsDiscoveryEnded, + vlc_AddonChanged } vlc_event_type_t; /* Event definition */ @@ -132,6 +145,16 @@ typedef struct vlc_event_t void * p_obj; /* Sender object, automatically filled by vlc_event_send() */ union vlc_event_type_specific { + /* Input (thread) events */ + struct vlc_input_state_changed + { + int new_state; + } input_state_changed; + struct vlc_input_selected_stream_changed + { + void * unused; + } input_selected_stream_changed; + /* Input item events */ struct vlc_input_item_meta_changed { @@ -141,6 +164,10 @@ typedef struct vlc_event_t { input_item_t * p_new_child; } input_item_subitem_added; + struct vlc_input_item_subitem_tree_added + { + input_item_node_t * p_root; + } input_item_subitem_tree_added; struct vlc_input_item_duration_changed { mtime_t new_duration; @@ -149,6 +176,18 @@ typedef struct vlc_event_t { int new_status; } input_item_preparsed_changed; + struct vlc_input_item_name_changed + { + const char * new_name; + } input_item_name_changed; + struct vlc_input_item_info_changed + { + void * unused; + } input_item_info_changed; + struct input_item_error_when_reading_changed + { + bool new_value; + } input_item_error_when_reading_changed; /* Service discovery events */ struct vlc_services_discovery_item_added @@ -169,6 +208,11 @@ typedef struct vlc_event_t void * unused; } services_discovery_ended; + /* Addons */ + struct vlc_addon_generic_event + { + addon_entry_t * p_entry; + } addon_generic_event; } u; } vlc_event_t; @@ -182,49 +226,39 @@ typedef void ( *vlc_event_callback_t )( const vlc_event_t *, void * ); /* * p_obj points to the object that owns the event manager, and from * which events are sent - * p_obj is here to give us a libvlc instance */ -#define vlc_event_manager_init_with_vlc_object(a,b) \ - vlc_event_manager_init( a, b, b ) - -#define vlc_event_manager_init(a,b,c) \ - __vlc_event_manager_init(a, b, VLC_OBJECT(c)) -VLC_EXPORT(int, __vlc_event_manager_init, ( vlc_event_manager_t * p_em, - void * p_obj, vlc_object_t * )); +VLC_API int vlc_event_manager_init( vlc_event_manager_t * p_em, void * p_obj ); /* * Destroy */ -VLC_EXPORT(void, vlc_event_manager_fini, ( vlc_event_manager_t * p_em )); +VLC_API void vlc_event_manager_fini( vlc_event_manager_t * p_em ); /* * Tells a specific event manager that it will handle event_type object */ -VLC_EXPORT(int, vlc_event_manager_register_event_type, - ( vlc_event_manager_t * p_em, vlc_event_type_t event_type )); +VLC_API int vlc_event_manager_register_event_type( vlc_event_manager_t * p_em, + vlc_event_type_t ); /* * Send an event to the listener attached to this p_em. */ -VLC_EXPORT(void, vlc_event_send, ( vlc_event_manager_t * p_em, - vlc_event_t * p_event )); +VLC_API void vlc_event_send( vlc_event_manager_t * p_em, vlc_event_t * ); /* * Add a callback for an event. */ -#define vlc_event_attach(a, b, c, d) __vlc_event_attach(a, b, c, d, #c) -VLC_EXPORT(int, __vlc_event_attach, ( vlc_event_manager_t * p_event_manager, - vlc_event_type_t event_type, - vlc_event_callback_t pf_callback, - void *p_user_data, - const char * psz_debug_name )); +VLC_API int vlc_event_attach( vlc_event_manager_t * p_event_manager, + vlc_event_type_t event_type, + vlc_event_callback_t pf_callback, + void *p_user_data ); /* * Remove a callback for an event. */ -VLC_EXPORT(int, vlc_event_detach, ( vlc_event_manager_t *p_event_manager, - vlc_event_type_t event_type, - vlc_event_callback_t pf_callback, - void *p_user_data )); +VLC_API void vlc_event_detach( vlc_event_manager_t *p_event_manager, + vlc_event_type_t event_type, + vlc_event_callback_t pf_callback, + void *p_user_data ); #endif /* VLC_EVENTS_H */