]> git.sesse.net Git - vlc/commitdiff
control/media_instance.c: Set a per-object drawable.
authorPierre d'Herbemont <pdherbemont@videolan.org>
Thu, 9 Aug 2007 12:45:37 +0000 (12:45 +0000)
committerPierre d'Herbemont <pdherbemont@videolan.org>
Thu, 9 Aug 2007 12:45:37 +0000 (12:45 +0000)
src/control/libvlc_internal.h
src/control/media_instance.c

index e86d7c6a02579adc7599be01b2d14110d15a00a7..d382fe185fd3451094b4f889cdb2f4e80433be5a 100644 (file)
@@ -95,9 +95,10 @@ struct libvlc_media_instance_t
     vlc_mutex_t        object_lock;
     int i_input_id;  /* Input object id. We don't use a pointer to
                         avoid any crash */
-    struct libvlc_instance_t  *p_libvlc_instance; /* Parent instance */
-    libvlc_media_descriptor_t *p_md; /* current media descriptor */
-    libvlc_event_manager_t * p_event_manager;
+    struct libvlc_instance_t *  p_libvlc_instance; /* Parent instance */
+    libvlc_media_descriptor_t * p_md; /* current media descriptor */
+    libvlc_event_manager_t *    p_event_manager;
+    libvlc_drawable_t           drawable;
 };
 
 struct libvlc_media_list_player_t
index 56a585c0ff7fc64a9c36e1c4a6b3ae15b5f71572..56803e8ce7304c51eb764195980531c2fdca5811 100644 (file)
@@ -145,6 +145,7 @@ libvlc_media_instance_new( libvlc_instance_t * p_libvlc_instance,
 
     p_mi = malloc( sizeof(libvlc_media_instance_t) );
     p_mi->p_md = NULL;
+    p_mi->drawable = 0;
     p_mi->p_libvlc_instance = p_libvlc_instance;
     p_mi->i_input_id = -1;
     /* refcount strategy:
@@ -403,6 +404,12 @@ void libvlc_media_instance_play( libvlc_media_instance_t *p_mi,
                                          p_mi->p_md->p_input_item );
     p_mi->i_input_id = p_input_thread->i_object_id;
 
+    if( p_mi->drawable )
+    {
+        vlc_value_t val;
+        val.i_int = p_mi->drawable;
+        var_Set( p_input_thread, "drawable", val );
+    }
     var_AddCallback( p_input_thread, "state", input_state_changed, p_mi );
 
     /* will be released in media_instance_release() */
@@ -436,7 +443,17 @@ void libvlc_media_instance_pause( libvlc_media_instance_t *p_mi,
 void libvlc_media_instance_stop( libvlc_media_instance_t *p_mi,
                                  libvlc_exception_t *p_e )
 {
-    libvlc_exception_raise( p_mi, "Not implemented" );
+    libvlc_exception_raise( p_e, "Not implemented" );
+}
+
+/**************************************************************************
+ * Set Drawable
+ **************************************************************************/
+void libvlc_media_instance_set_drawable( libvlc_media_instance_t *p_mi,
+                                         libvlc_drawable_t drawable,
+                                         libvlc_exception_t *p_e )
+{
+    p_mi->drawable = drawable;
 }
 
 /**************************************************************************