X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=include%2Fvlc%2Flibvlc_events.h;h=e6af9b25da9c2e52b48eb81bbaad3812422091d7;hb=ca46a8b72ea78b00394e463d12052e036796cefa;hp=024c8eef76375a44fc8e2a18d417bad13dca4e7a;hpb=a4bb63528cb37044ad04db9bb763d342cb3a7b15;p=vlc diff --git a/include/vlc/libvlc_events.h b/include/vlc/libvlc_events.h index 024c8eef76..e6af9b25da 100644 --- a/include/vlc/libvlc_events.h +++ b/include/vlc/libvlc_events.h @@ -1,7 +1,7 @@ /***************************************************************************** * libvlc_events.h: libvlc_events external API structure ***************************************************************************** - * Copyright (C) 1998-2007 the VideoLAN team + * Copyright (C) 1998-2008 the VideoLAN team * $Id $ * * Authors: Filippo Carone @@ -17,13 +17,18 @@ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU 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 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 _LIBVLC_EVENTS_H -#define _LIBVLC_EVENTS_H 1 +#ifndef LIBVLC_EVENTS_H +#define LIBVLC_EVENTS_H 1 + +/** + * \file + * This file defines libvlc_event external API + */ # ifdef __cplusplus extern "C" { @@ -39,46 +44,82 @@ extern "C" { * @{ */ -typedef enum libvlc_event_type_t { - libvlc_MediaMetaChanged, - libvlc_MediaSubItemAdded, - libvlc_MediaDurationChanged, - libvlc_MediaPreparsedChanged, - libvlc_MediaFreed, - libvlc_MediaStateChanged, - - libvlc_MediaPlayerNothingSpecial, - libvlc_MediaPlayerOpening, - libvlc_MediaPlayerBuffering, - libvlc_MediaPlayerPlaying, - libvlc_MediaPlayerPaused, - libvlc_MediaPlayerEndReached, - libvlc_MediaPlayerForward, - libvlc_MediaPlayerBackward, - libvlc_MediaPlayerEncounteredError, - libvlc_MediaPlayerTimeChanged, - libvlc_MediaPlayerPositionChanged, - libvlc_MediaPlayerSeekableChanged, - libvlc_MediaPlayerPausableChanged, - - libvlc_MediaListItemAdded, - libvlc_MediaListWillAddItem, - libvlc_MediaListItemDeleted, - libvlc_MediaListWillDeleteItem, - - libvlc_MediaListViewItemAdded, - libvlc_MediaListViewWillAddItem, - libvlc_MediaListViewItemDeleted, - libvlc_MediaListViewWillDeleteItem, - - libvlc_MediaListPlayerPlayed, - libvlc_MediaListPlayerNextItemSet, - libvlc_MediaListPlayerStopped, - - libvlc_MediaDiscovererStarted, - libvlc_MediaDiscovererEnded - -} libvlc_event_type_t; + /* Append new event types at the end. Do not remove, insert or + * re-order any entry. The cpp will prepend libvlc_ to the symbols. */ +#define DEFINE_LIBVLC_EVENT_TYPES \ + DEF( MediaMetaChanged ), \ + DEF( MediaSubItemAdded ), \ + DEF( MediaDurationChanged ), \ + DEF( MediaPreparsedChanged ), \ + DEF( MediaFreed ), \ + DEF( MediaStateChanged ), \ + \ + DEF( MediaPlayerNothingSpecial ), \ + DEF( MediaPlayerOpening ), \ + DEF( MediaPlayerBuffering ), \ + DEF( MediaPlayerPlaying ), \ + DEF( MediaPlayerPaused ), \ + DEF( MediaPlayerStopped ), \ + DEF( MediaPlayerForward ), \ + DEF( MediaPlayerBackward ), \ + DEF( MediaPlayerEndReached ), \ + DEF( MediaPlayerEncounteredError ), \ + DEF( MediaPlayerTimeChanged ), \ + DEF( MediaPlayerPositionChanged ), \ + DEF( MediaPlayerSeekableChanged ), \ + DEF( MediaPlayerPausableChanged ), \ + \ + DEF( MediaListItemAdded ), \ + DEF( MediaListWillAddItem ), \ + DEF( MediaListItemDeleted ), \ + DEF( MediaListWillDeleteItem ), \ + \ + DEF( MediaListViewItemAdded ), \ + DEF( MediaListViewWillAddItem ), \ + DEF( MediaListViewItemDeleted ), \ + DEF( MediaListViewWillDeleteItem ), \ + \ + DEF( MediaListPlayerPlayed ), \ + DEF( MediaListPlayerNextItemSet ), \ + DEF( MediaListPlayerStopped ), \ + \ + DEF( MediaDiscovererStarted ), \ + DEF( MediaDiscovererEnded ), \ + \ + DEF( MediaPlayerTitleChanged ), \ + DEF( MediaPlayerSnapshotTaken ), \ + DEF( MediaPlayerLengthChanged ), \ + \ + DEF( VlmMediaAdded ), \ + DEF( VlmMediaRemoved ), \ + DEF( VlmMediaChanged ), \ + DEF( VlmMediaInstanceStarted ), \ + DEF( VlmMediaInstanceStopped ), \ + DEF( VlmMediaInstanceStatusInit ), \ + DEF( VlmMediaInstanceStatusOpening ), \ + DEF( VlmMediaInstanceStatusPlaying ), \ + DEF( VlmMediaInstanceStatusPause ), \ + DEF( VlmMediaInstanceStatusEnd ), \ + DEF( VlmMediaInstanceStatusError ), \ + \ + DEF( MediaPlayerMediaChanged ), \ +/* New event types HERE */ + +#ifdef __cplusplus +enum libvlc_event_type_e { +#else +enum libvlc_event_type_t { +#endif +#define DEF(a) libvlc_##a + DEFINE_LIBVLC_EVENT_TYPES + libvlc_num_event_types +#undef DEF +}; + +/* Implementing libvlc_event_type_name() needs the definition too. */ +#ifndef LIBVLC_EVENT_TYPES_KEEP_DEFINE +#undef DEFINE_LIBVLC_EVENT_TYPES +#endif /** * An Event @@ -87,7 +128,7 @@ typedef enum libvlc_event_type_t { * \param u Event dependent content */ -typedef struct libvlc_event_t +struct libvlc_event_t { libvlc_event_type_t type; void * p_obj; @@ -130,11 +171,15 @@ typedef struct libvlc_event_t } media_player_time_changed; struct { - libvlc_time_t new_seekable; + int new_title; + } media_player_title_changed; + struct + { + int new_seekable; } media_player_seekable_changed; struct { - libvlc_time_t new_pausable; + int new_pausable; } media_player_pausable_changed; /* media list */ @@ -159,54 +204,39 @@ typedef struct libvlc_event_t int index; } media_list_will_delete_item; - /* media list view */ + /* media list player */ struct { libvlc_media_t * item; - int index; - } media_list_view_item_added; - struct - { - libvlc_media_t * item; - int index; - } media_list_view_will_add_item; + } media_list_player_next_item_set; + + /* snapshot taken */ struct { - libvlc_media_t * item; - int index; - } media_list_view_item_deleted; + char* psz_filename ; + } media_player_snapshot_taken ; + + /* Length changed */ struct { - libvlc_media_t * item; - int index; - } media_list_view_will_delete_item; + libvlc_time_t new_length; + } media_player_length_changed; - /* media discoverer */ + /* VLM media */ struct { - void * unused; - } media_media_discoverer_started; + const char * psz_media_name; + const char * psz_instance_name; + } vlm_media_event; + + /* Extra MediaPlayer */ struct { - void * unused; - } media_media_discoverer_ended; - + libvlc_media_t * new_media; + } media_player_media_changed; } u; -} libvlc_event_t; - -/** - * Event manager that belongs to a libvlc object, and from whom events can - * be received. - */ - -typedef struct libvlc_event_manager_t libvlc_event_manager_t; - -/** - * Callback function notification - * \param p_event the event triggering the callback - */ +}; -typedef void ( *libvlc_callback_t )( const libvlc_event_t *, void * ); /**@} */