]> git.sesse.net Git - vlc/commitdiff
Used vout_control_Push for vout_RegisterSubpictureChannel.
authorLaurent Aimar <fenrir@videolan.org>
Tue, 25 May 2010 19:54:45 +0000 (21:54 +0200)
committerLaurent Aimar <fenrir@videolan.org>
Tue, 25 May 2010 19:54:45 +0000 (21:54 +0200)
src/video_output/control.h
src/video_output/video_output.c

index 4654736a8def1aff8e7cc01c4d5d742c8919e068..fc265e1fa8a0487aa33559b4d2228a68e6228ecc 100644 (file)
@@ -41,6 +41,7 @@ enum {
 #endif
     VOUT_CONTROL_SUBPICTURE,            /* subpicture */
     VOUT_CONTROL_FLUSH_SUBPICTURE,      /* integer */
+    VOUT_CONTROL_REGISTER_SUBPICTURE,   /* integer_ptr */
     VOUT_CONTROL_OSD_TITLE,             /* string */
     VOUT_CONTROL_CHANGE_FILTERS,        /* string */
     VOUT_CONTROL_CHANGE_SUB_FILTERS,    /* string */
@@ -70,6 +71,7 @@ typedef struct {
         mtime_t *time_ptr;
         char    *string;
         int     integer;
+        int     *integer_ptr;
         struct {
             int a;
             int b;
index 7c1c8bd8bfbcbee241d88abca5149486c83d5afd..b3f54d751248a9c7dbbb56ee54387d04630f57cc 100644 (file)
@@ -357,7 +357,16 @@ void vout_PutSubpicture( vout_thread_t *vout, subpicture_t *subpic )
 }
 int vout_RegisterSubpictureChannel( vout_thread_t *vout )
 {
-    return spu_RegisterChannel(vout->p->p_spu);
+    int channel = SPU_DEFAULT_CHANNEL;
+
+    vout_control_cmd_t cmd;
+    vout_control_cmd_Init(&cmd, VOUT_CONTROL_REGISTER_SUBPICTURE);
+    cmd.u.integer_ptr = &channel;
+
+    vout_control_Push(&vout->p->control, &cmd);
+    vout_control_WaitEmpty(&vout->p->control);
+
+    return channel;
 }
 void vout_FlushSubpictureChannel( vout_thread_t *vout, int channel )
 {
@@ -760,6 +769,11 @@ static void ThreadDisplaySubpicture(vout_thread_t *vout,
     spu_DisplaySubpicture(vout->p->p_spu, subpicture);
 }
 
+static void ThreadRegisterSubpicture(vout_thread_t *vout, int *channel)
+{
+    *channel = spu_RegisterChannel(vout->p->p_spu);
+}
+
 static void ThreadFlushSubpicture(vout_thread_t *vout, int channel)
 {
     spu_ClearChannel(vout->p->p_spu, channel);
@@ -1123,6 +1137,9 @@ static void *Thread(void *object)
             case VOUT_CONTROL_FLUSH_SUBPICTURE:
                 ThreadFlushSubpicture(vout, cmd.u.integer);
                 break;
+            case VOUT_CONTROL_REGISTER_SUBPICTURE:
+                ThreadRegisterSubpicture(vout, cmd.u.integer_ptr);
+                break;
             case VOUT_CONTROL_OSD_TITLE:
                 ThreadDisplayOsdTitle(vout, cmd.u.string);
                 break;