]> git.sesse.net Git - vlc/blobdiff - modules/video_filter/puzzle.c
video_filter_colorthres: fix a typo.
[vlc] / modules / video_filter / puzzle.c
index 6ab8a1e31dc81482cbe4975c1795854df1233881..2c922703f034970a8bde33d399030c62f6fab117 100644 (file)
@@ -97,6 +97,12 @@ struct filter_sys_t
     /* */
     vlc_mutex_t lock;
     bool b_change;
+    struct
+    {
+        int i_cols;
+        int i_rows;
+        bool b_blackslot;
+    } change;
 };
 
 #define SHUFFLE_WIDTH 81
@@ -145,9 +151,12 @@ static int Open( vlc_object_t *p_this )
     p_sys->pi_order = NULL;
 
     vlc_mutex_init( &p_sys->lock );
-    p_sys->i_rows = var_CreateGetIntegerCommand( p_filter, CFG_PREFIX "rows" );
-    p_sys->i_cols = var_CreateGetIntegerCommand( p_filter, CFG_PREFIX "cols" );
-    p_sys->b_blackslot = var_CreateGetBoolCommand( p_filter, CFG_PREFIX "black-slot" );
+    p_sys->change.i_rows =
+        var_CreateGetIntegerCommand( p_filter, CFG_PREFIX "rows" );
+    p_sys->change.i_cols =
+        var_CreateGetIntegerCommand( p_filter, CFG_PREFIX "cols" );
+    p_sys->change.b_blackslot =
+        var_CreateGetBoolCommand( p_filter, CFG_PREFIX "black-slot" );
     p_sys->b_change = true;
 
     var_AddCallback( p_filter, CFG_PREFIX "rows", PuzzleCallback, p_sys );
@@ -155,7 +164,7 @@ static int Open( vlc_object_t *p_this )
     var_AddCallback( p_filter, CFG_PREFIX "black-slot", PuzzleCallback, p_sys );
 
     p_filter->pf_video_filter = Filter;
-    p_filter->pf_mouse = Mouse;
+    p_filter->pf_video_mouse = Mouse;
 
     return VLC_SUCCESS;
 }
@@ -196,7 +205,11 @@ static picture_t *Filter( filter_t *p_filter, picture_t *p_pic )
     vlc_mutex_lock( &p_sys->lock );
     if( p_sys->b_change )
     {
+        p_sys->i_rows      = p_sys->change.i_rows;
+        p_sys->i_cols      = p_sys->change.i_cols;
+        p_sys->b_blackslot = p_sys->change.b_blackslot;
         p_sys->b_change = false;
+
         Shuffle( p_sys );
     }
     vlc_mutex_unlock( &p_sys->lock );
@@ -362,15 +375,15 @@ static int PuzzleCallback( vlc_object_t *p_this, char const *psz_var,
     vlc_mutex_lock( &p_sys->lock );
     if( !strcmp( psz_var, CFG_PREFIX "rows" ) )
     {
-        p_sys->i_rows = __MAX( 1, newval.i_int );
+        p_sys->change.i_rows = __MAX( 1, newval.i_int );
     }
     else if( !strcmp( psz_var, CFG_PREFIX "cols" ) )
     {
-        p_sys->i_cols = __MAX( 1, newval.i_int );
+        p_sys->change.i_cols = __MAX( 1, newval.i_int );
     }
     else if( !strcmp( psz_var, CFG_PREFIX "black-slot" ) )
     {
-        p_sys->b_blackslot = newval.b_bool;
+        p_sys->change.b_blackslot = newval.b_bool;
     }
     p_sys->b_change = true;
     vlc_mutex_unlock( &p_sys->lock );
@@ -392,7 +405,7 @@ static bool IsValid( filter_sys_t *p_sys )
 {
     const int i_count = p_sys->i_cols * p_sys->i_rows;
 
-    if( p_sys->b_blackslot )
+    if( !p_sys->b_blackslot )
         return true;
 
     int d = 0;
@@ -434,7 +447,7 @@ static void Shuffle( filter_sys_t *p_sys )
         }
         p_sys->b_finished = IsFinished( p_sys );
 
-    } while( p_sys->b_finished || IsValid( p_sys ) );
+    } while( p_sys->b_finished || !IsValid( p_sys ) );
 
     if( p_sys->b_blackslot )
     {