Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025 #ifndef VLC_EVENTS_H
00026 # define VLC_EVENTS_H
00027
00028 #include <vlc_arrays.h>
00029 #include <vlc_meta.h>
00030
00031
00032
00033
00034
00035
00036
00037
00038
00039
00040
00041
00042
00043
00044
00045
00046
00047
00048
00049
00050
00051
00052
00053
00054
00055
00056
00057
00058
00059
00060
00061
00062
00063
00064
00065
00066
00067
00068
00069
00070
00071
00072
00073
00074
00075
00076
00077
00078
00079
00080
00081
00082
00083
00084
00085
00086
00087
00088
00089
00090
00091
00092
00093
00094
00095
00096
00097
00098
00099
00100 struct vlc_event_listeners_group_t;
00101
00102
00103 typedef struct vlc_event_manager_t
00104 {
00105 void * p_obj;
00106 vlc_mutex_t object_lock;
00107 vlc_mutex_t event_sending_lock;
00108 DECL_ARRAY(struct vlc_event_listeners_group_t *) listeners_groups;
00109 } vlc_event_manager_t;
00110
00111
00112 typedef enum vlc_event_type_t {
00113
00114 vlc_InputStateChanged,
00115 vlc_InputSelectedStreamChanged,
00116
00117
00118 vlc_InputItemMetaChanged,
00119 vlc_InputItemSubItemAdded,
00120 vlc_InputItemSubItemTreeAdded,
00121 vlc_InputItemDurationChanged,
00122 vlc_InputItemPreparsedChanged,
00123 vlc_InputItemNameChanged,
00124 vlc_InputItemInfoChanged,
00125 vlc_InputItemErrorWhenReadingChanged,
00126
00127
00128 vlc_ServicesDiscoveryItemAdded,
00129 vlc_ServicesDiscoveryItemRemoved,
00130 vlc_ServicesDiscoveryItemRemoveAll,
00131 vlc_ServicesDiscoveryStarted,
00132 vlc_ServicesDiscoveryEnded
00133 } vlc_event_type_t;
00134
00135
00136 typedef struct vlc_event_t
00137 {
00138 vlc_event_type_t type;
00139 void * p_obj;
00140 union vlc_event_type_specific
00141 {
00142
00143 struct vlc_input_state_changed
00144 {
00145 int new_state;
00146 } input_state_changed;
00147 struct vlc_input_selected_stream_changed
00148 {
00149 void * unused;
00150 } input_selected_stream_changed;
00151
00152
00153 struct vlc_input_item_meta_changed
00154 {
00155 vlc_meta_type_t meta_type;
00156 } input_item_meta_changed;
00157 struct vlc_input_item_subitem_added
00158 {
00159 input_item_t * p_new_child;
00160 } input_item_subitem_added;
00161 struct vlc_input_item_subitem_tree_added
00162 {
00163 input_item_node_t * p_root;
00164 } input_item_subitem_tree_added;
00165 struct vlc_input_item_duration_changed
00166 {
00167 mtime_t new_duration;
00168 } input_item_duration_changed;
00169 struct vlc_input_item_preparsed_changed
00170 {
00171 int new_status;
00172 } input_item_preparsed_changed;
00173 struct vlc_input_item_name_changed
00174 {
00175 const char * new_name;
00176 } input_item_name_changed;
00177 struct vlc_input_item_info_changed
00178 {
00179 void * unused;
00180 } input_item_info_changed;
00181 struct input_item_error_when_reading_changed
00182 {
00183 bool new_value;
00184 } input_item_error_when_reading_changed;
00185
00186
00187 struct vlc_services_discovery_item_added
00188 {
00189 input_item_t * p_new_item;
00190 const char * psz_category;
00191 } services_discovery_item_added;
00192 struct vlc_services_discovery_item_removed
00193 {
00194 input_item_t * p_item;
00195 } services_discovery_item_removed;
00196 struct vlc_services_discovery_started
00197 {
00198 void * unused;
00199 } services_discovery_started;
00200 struct vlc_services_discovery_ended
00201 {
00202 void * unused;
00203 } services_discovery_ended;
00204
00205 } u;
00206 } vlc_event_t;
00207
00208
00209 typedef void ( *vlc_event_callback_t )( const vlc_event_t *, void * );
00210
00211
00212
00213
00214
00215
00216
00217
00218
00219 VLC_API int vlc_event_manager_init( vlc_event_manager_t * p_em, void * p_obj );
00220
00221
00222
00223
00224 VLC_API void vlc_event_manager_fini( vlc_event_manager_t * p_em );
00225
00226
00227
00228
00229 VLC_API int vlc_event_manager_register_event_type( vlc_event_manager_t * p_em,
00230 vlc_event_type_t );
00231
00232
00233
00234
00235 VLC_API void vlc_event_send( vlc_event_manager_t * p_em, vlc_event_t * );
00236
00237
00238
00239
00240 VLC_API int vlc_event_attach( vlc_event_manager_t * p_event_manager,
00241 vlc_event_type_t event_type,
00242 vlc_event_callback_t pf_callback,
00243 void *p_user_data );
00244
00245
00246
00247
00248 VLC_API void vlc_event_detach( vlc_event_manager_t *p_event_manager,
00249 vlc_event_type_t event_type,
00250 vlc_event_callback_t pf_callback,
00251 void *p_user_data );
00252
00253 #endif