]> git.sesse.net Git - vlc/blobdiff - include/vlc_extensions.h
Use var_Inherit* instead of var_CreateGet*.
[vlc] / include / vlc_extensions.h
index c86098f0a197ad625bb2efd49f748cc2dde15bf2..07c6221ae744008b426989cd1184ae17ee3ff513 100644 (file)
@@ -32,10 +32,18 @@ typedef struct extensions_manager_sys_t extensions_manager_sys_t;
 typedef struct extensions_manager_t extensions_manager_t;
 typedef struct extension_sys_t extension_sys_t;
 
-/** Extension descriptor */
+/** Extension descriptor: name, title, author, ... */
 typedef struct extension_t {
-    char *psz_title;          /**< Display title (ro) */
+    /* Below, (ro) means read-only for the GUI */
     char *psz_name;           /**< Real name of the extension (ro) */
+
+    char *psz_title;          /**< Display title (ro) */
+    char *psz_author;         /**< Author of the extension (ro) */
+    char *psz_version;        /**< Version (ro) */
+    char *psz_url;            /**< A URL to the official page (ro) */
+    char *psz_description;    /**< Full description (ro) */
+    char *psz_shortdescription; /**< Short description (eg. 1 line)  (ro) */
+
     extension_sys_t *p_sys;   /**< Reserved for the manager module */
 } extension_t;
 
@@ -48,6 +56,7 @@ struct extensions_manager_t
     extensions_manager_sys_t *p_sys;   /**< Reserved for the module */
 
     DECL_ARRAY(extension_t*) extensions; /**< Array of extension descriptors */
+    vlc_mutex_t lock;                  /**< A lock for the extensions array */
 
     /** Control, see extension_Control */
     int ( *pf_control ) ( extensions_manager_t*, int, va_list );
@@ -65,6 +74,8 @@ enum
     EXTENSION_TRIGGER_ONLY,   /**< arg1: extension_t*, arg2: bool* */
     EXTENSION_TRIGGER,        /**< arg1: extension_t* */
     EXTENSION_TRIGGER_MENU,   /**< arg1: extension_t*, int (uint16_t) */
+    EXTENSION_SET_INPUT,      /**< arg1: extension_t*, arg2 (input_thread_t) */
+    EXTENSION_PLAYING_CHANGED, /**< arg1: extension_t*, arg2 int( playing status ) */
 };
 
 /**
@@ -135,6 +146,21 @@ static inline int extension_TriggerMenu( extensions_manager_t *p_mgr,
     return extension_Control( p_mgr, EXTENSION_TRIGGER_MENU, p_ext, i );
 }
 
+/** Trigger an entry of the extension menu */
+static inline int extension_SetInput( extensions_manager_t *p_mgr,
+                                        extension_t *p_ext,
+                                        struct input_thread_t *p_input )
+{
+    return extension_Control( p_mgr, EXTENSION_SET_INPUT, p_ext, p_input );
+}
+
+static inline int extension_PlayingChanged( extensions_manager_t *p_mgr,
+                                            extension_t *p_ext,
+                                            int state )
+{
+    return extension_Control( p_mgr, EXTENSION_PLAYING_CHANGED, p_ext, state );
+}
+
 /** Can this extension only be triggered but not activated?
     Not compatible with HasMenu */
 #define extension_TriggerOnly( mgr, ext ) \