]> git.sesse.net Git - vlc/commitdiff
Moved "sub-margin" to vout.
authorLaurent Aimar <fenrir@videolan.org>
Fri, 28 May 2010 20:04:09 +0000 (22:04 +0200)
committerLaurent Aimar <fenrir@videolan.org>
Sat, 29 May 2010 20:12:31 +0000 (22:12 +0200)
It doesn't belong to the input.

modules/control/hotkeys.c
src/input/var.c
src/video_output/control.h
src/video_output/video_output.c
src/video_output/vout_internal.h
src/video_output/vout_intf.c
src/video_output/vout_subpictures.c

index 31e1895a15397c220c04a53aca7403a4ffaaf852..5a0664946c1b45ca622c83052e7ec82c9afb1dea 100644 (file)
@@ -783,14 +783,14 @@ static int PutAction( intf_thread_t *p_intf, int i_action )
                                 _( "Subtitle delay %i ms" ),
                                  (int)(i_delay/1000) );
             }
-            else if( i_action == ACTIONID_SUBPOS_DOWN ||
-                     i_action == ACTIONID_SUBPOS_UP )
+            else if( i_action == ACTIONID_SUBPOS_DOWN ||
+                       i_action == ACTIONID_SUBPOS_UP ) && p_vout )
             {
                 int i_pos;
                 if( i_action == ACTIONID_SUBPOS_DOWN )
-                    i_pos = var_DecInteger( p_input, "sub-margin" );
+                    i_pos = var_DecInteger( p_vout, "sub-margin" );
                 else
-                    i_pos = var_IncInteger( p_input, "sub-margin" );
+                    i_pos = var_IncInteger( p_vout, "sub-margin" );
 
                 ClearChannels( p_intf, p_vout );
                 DisplayMessage( p_vout, SPU_DEFAULT_CHANNEL,
index 93b967a348f361914bc369925086b76720279cd5..0ad6ff43c353606100948e87a4cb15cd95543158 100644 (file)
@@ -220,8 +220,6 @@ void input_ControlVarInit ( input_thread_t *p_input )
     text.psz_string = _("Subtitles Track");
     var_Change( p_input, "spu-es", VLC_VAR_SETTEXT, &text, NULL );
 
-    var_Create( p_input, "sub-margin", VLC_VAR_INTEGER | VLC_VAR_DOINHERIT );
-
     /* Special read only objects variables for intf */
     var_Create( p_input, "bookmarks", VLC_VAR_STRING | VLC_VAR_DOINHERIT );
 
index 4654736a8def1aff8e7cc01c4d5d742c8919e068..9510c22ce98aa97aaea41c1b8e78881e42e1b7a3 100644 (file)
@@ -44,6 +44,7 @@ enum {
     VOUT_CONTROL_OSD_TITLE,             /* string */
     VOUT_CONTROL_CHANGE_FILTERS,        /* string */
     VOUT_CONTROL_CHANGE_SUB_FILTERS,    /* string */
+    VOUT_CONTROL_CHANGE_SUB_MARGIN,     /* integer */
 
     VOUT_CONTROL_PAUSE,
     VOUT_CONTROL_RESET,
index b873d4c13f978ee83aac090de78881944f74949b..6f9e7abfd235d04a8dbc874f8e14b1ad1eebcace 100644 (file)
@@ -435,6 +435,11 @@ void vout_ControlChangeSubFilters(vout_thread_t *vout, const char *filters)
     vout_control_PushString(&vout->p->control, VOUT_CONTROL_CHANGE_SUB_FILTERS,
                             filters);
 }
+void vout_ControlChangeSubMargin(vout_thread_t *vout, int margin)
+{
+    vout_control_PushInteger(&vout->p->control, VOUT_CONTROL_CHANGE_SUB_MARGIN,
+                             margin);
+}
 
 /* */
 static void VoutGetDisplayCfg(vout_thread_t *vout, vout_display_cfg_t *cfg, const char *title)
@@ -798,6 +803,10 @@ static void ThreadChangeSubFilters(vout_thread_t *vout, const char *filters)
 {
     spu_ChangeFilters(vout->p->p_spu, filters);
 }
+static void ThreadChangeSubMargin(vout_thread_t *vout, int margin)
+{
+    spu_ChangeMargin(vout->p->p_spu, margin);
+}
 
 static void ThreadChangePause(vout_thread_t *vout, bool is_paused, mtime_t date)
 {
@@ -1135,6 +1144,9 @@ static void *Thread(void *object)
             case VOUT_CONTROL_CHANGE_SUB_FILTERS:
                 ThreadChangeSubFilters(vout, cmd.u.string);
                 break;
+            case VOUT_CONTROL_CHANGE_SUB_MARGIN:
+                ThreadChangeSubMargin(vout, cmd.u.integer);
+                break;
             case VOUT_CONTROL_PAUSE:
                 ThreadChangePause(vout, cmd.u.pause.is_on, cmd.u.pause.date);
                 break;
index 951a9d1643cedb0a8ffdb1deea4395269ab9bb79..de8f05834924e3eebcbdcbee77ee8d4a5acf46f0 100644 (file)
@@ -151,6 +151,7 @@ void vout_ControlChangeCropWindow(vout_thread_t *, int x, int y, int width, int
 void vout_ControlChangeCropBorder(vout_thread_t *, int left, int top, int right, int bottom);
 void vout_ControlChangeFilters(vout_thread_t *, const char *);
 void vout_ControlChangeSubFilters(vout_thread_t *, const char *);
+void vout_ControlChangeSubMargin(vout_thread_t *, int);
 
 /* */
 void vout_IntfInit( vout_thread_t * );
@@ -167,6 +168,7 @@ void vout_DisplayWrapper(vout_thread_t *, picture_t *);
 /* */
 int spu_ProcessMouse(spu_t *, const vlc_mouse_t *, const video_format_t *);
 void spu_Attach( spu_t *, vlc_object_t *input, bool );
+void spu_ChangeMargin(spu_t *, int);
 
 #endif
 
index 666fcc2b7ffd7daea2ccd4bf42dba08b905b19c6..23a727e45b0d93f913fd939e5b376cf070ef89cb 100644 (file)
@@ -75,7 +75,8 @@ static int VideoSplitterCallback( vlc_object_t *, char const *,
                                   vlc_value_t, vlc_value_t, void * );
 static int SubFilterCallback( vlc_object_t *, char const *,
                               vlc_value_t, vlc_value_t, void * );
-
+static int SubMarginCallback( vlc_object_t *, char const *,
+                              vlc_value_t, vlc_value_t, void * );
 static int TitleShowCallback( vlc_object_t *, char const *,
                               vlc_value_t, vlc_value_t, void * );
 static int TitleTimeoutCallback( vlc_object_t *, char const *,
@@ -377,6 +378,12 @@ void vout_IntfInit( vout_thread_t *p_vout )
     var_AddCallback( p_vout, "sub-filter", SubFilterCallback, NULL );
     var_TriggerCallback( p_vout, "sub-filter" );
 
+    /* Add sub-margin variable */
+    var_Create( p_vout, "sub-margin",
+                VLC_VAR_INTEGER | VLC_VAR_DOINHERIT | VLC_VAR_ISCOMMAND );
+    var_AddCallback( p_vout, "sub-margin", SubMarginCallback, NULL );
+    var_TriggerCallback( p_vout, "sub-margin" );
+
     /* Mouse coordinates */
     var_Create( p_vout, "mouse-button-down", VLC_VAR_INTEGER );
     var_Create( p_vout, "mouse-moved", VLC_VAR_COORDS );
@@ -790,6 +797,16 @@ static int SubFilterCallback( vlc_object_t *p_this, char const *psz_cmd,
     return VLC_SUCCESS;
 }
 
+static int SubMarginCallback( vlc_object_t *p_this, char const *psz_cmd,
+                              vlc_value_t oldval, vlc_value_t newval, void *p_data)
+{
+    vout_thread_t *p_vout = (vout_thread_t *)p_this;
+    VLC_UNUSED(psz_cmd); VLC_UNUSED(oldval); VLC_UNUSED(p_data);
+
+    vout_ControlChangeSubMargin( p_vout, newval.i_int );
+    return VLC_SUCCESS;
+}
+
 static int TitleShowCallback( vlc_object_t *p_this, char const *psz_cmd,
                        vlc_value_t oldval, vlc_value_t newval, void *p_data )
 {
index 1d71ef2b110baa423beb25e4fff7e75abd05dd2d..16dd34c20b71190493987ddee45090de4ca4c81f 100644 (file)
@@ -163,8 +163,6 @@ static void SpuRenderRegion( spu_t *,
 static void UpdateSPU   ( spu_t *, vlc_object_t * );
 static int  CropCallback( vlc_object_t *, char const *,
                           vlc_value_t, vlc_value_t, void * );
-static int MarginCallback( vlc_object_t *, char const *,
-                           vlc_value_t, vlc_value_t, void * );
 
 /* Buffer allocation for SPU filter (blend, scale, ...) */
 struct filter_owner_sys_t
@@ -288,11 +286,9 @@ void spu_Attach( spu_t *p_spu, vlc_object_t *p_input, bool b_attach )
         UpdateSPU( p_spu, p_input );
         var_Create( p_input, "highlight", VLC_VAR_BOOL );
         var_AddCallback( p_input, "highlight", CropCallback, p_spu );
-        var_AddCallback( p_input, "sub-margin", MarginCallback, p_spu->p );
 
         vlc_mutex_lock( &p_spu->p->lock );
         p_spu->p->p_input = p_input;
-        p_spu->p->i_margin = var_GetInteger( p_input, "sub-margin" );
 
         FilterRelease( p_spu->p->p_text );
         p_spu->p->p_text = NULL;
@@ -307,7 +303,6 @@ void spu_Attach( spu_t *p_spu, vlc_object_t *p_input, bool b_attach )
         vlc_mutex_unlock( &p_spu->p->lock );
 
         /* Delete callbacks */
-        var_DelCallback( p_input, "sub-margin", MarginCallback, p_spu->p );
         var_DelCallback( p_input, "highlight", CropCallback, p_spu );
         var_Destroy( p_input, "highlight" );
     }
@@ -765,6 +760,15 @@ void spu_ChangeFilters( spu_t *p_spu, const char *psz_filters )
     vlc_mutex_unlock( &p_sys->lock );
 }
 
+void spu_ChangeMargin( spu_t *p_spu, int i_margin )
+{
+    spu_private_t *p_sys = p_spu->p;
+
+    vlc_mutex_lock( &p_sys->lock );
+    p_sys->i_margin = i_margin;
+    vlc_mutex_unlock( &p_sys->lock );
+}
+
 /*****************************************************************************
  * subpicture_t allocation
  *****************************************************************************/
@@ -1852,22 +1856,6 @@ static int CropCallback( vlc_object_t *p_object, char const *psz_var,
     return VLC_SUCCESS;
 }
 
-/*****************************************************************************
- * MarginCallback: called when requested subtitle position has changed         *
- *****************************************************************************/
-
-static int MarginCallback( vlc_object_t *p_object, char const *psz_var,
-                         vlc_value_t oldval, vlc_value_t newval, void *p_data )
-{
-    VLC_UNUSED( psz_var ); VLC_UNUSED( oldval ); VLC_UNUSED( p_object );
-    spu_private_t *p_sys = ( spu_private_t* ) p_data;
-
-    vlc_mutex_lock( &p_sys->lock );
-    p_sys->i_margin = newval.i_int;
-    vlc_mutex_unlock( &p_sys->lock );
-    return VLC_SUCCESS;
-}
-
 /*****************************************************************************
  * Buffers allocation callbacks for the filters
  *****************************************************************************/