diff --git a/veejay-current/veejay-client/share/gveejay.reloaded.glade b/veejay-current/veejay-client/share/gveejay.reloaded.glade
index d2d3080f..eb35187c 100644
--- a/veejay-current/veejay-client/share/gveejay.reloaded.glade
+++ b/veejay-current/veejay-client/share/gveejay.reloaded.glade
@@ -9122,6 +9122,23 @@ YUV (current)
0
+
+
+ Alpha Clear
+ True
+ True
+ False
+ Clears the alpha channel every frame period when enabled
+ True
+ True
+
+
+
+ True
+ True
+ 1
+
+
True
@@ -12687,6 +12704,12 @@ YUV (current)
+
+
+
+
+
+
True
diff --git a/veejay-current/veejay-client/src/callback.c b/veejay-current/veejay-client/src/callback.c
index af091cf0..30aeb660 100644
--- a/veejay-current/veejay-client/src/callback.c
+++ b/veejay-current/veejay-client/src/callback.c
@@ -4156,4 +4156,12 @@ void on_save_midi_layout1_activate( GtkWidget *w, gpointer data )
void on_clear_midi_layout1_activate( GtkWidget *w, gpointer data )
{
vj_midi_reset(info->midi);
-}
+}
+
+
+void on_alphacomposite_toggled(GtkWidget *widget, gpointer user_data)
+{
+ multi_vims( VIMS_ALPHA_COMPOSITE,"%d", is_button_toggled( "alphacomposite" ));
+}
+
+
diff --git a/veejay-current/veejay-server/veejay/vims.h b/veejay-current/veejay-server/veejay/vims.h
index f4db9951..28e53e79 100644
--- a/veejay-current/veejay-server/veejay/vims.h
+++ b/veejay-current/veejay-server/veejay/vims.h
@@ -106,6 +106,7 @@ enum {
VIMS_SYNC_CORRECTION = 334,
VIMS_FRAMERATE = 335,
VIMS_SUB_RENDER = 336,
+ VIMS_ALPHA_COMPOSITE = 337,
VIMS_VIDEO_PLAY_FORWARD = 10,
VIMS_VIDEO_PLAY_BACKWARD = 11,
VIMS_VIDEO_PLAY_STOP = 12,
diff --git a/veejay-current/veejay-server/veejay/vj-event.c b/veejay-current/veejay-server/veejay/vj-event.c
index e4fd746f..a4b4e1ff 100644
--- a/veejay-current/veejay-server/veejay/vj-event.c
+++ b/veejay-current/veejay-server/veejay/vj-event.c
@@ -10585,3 +10585,20 @@ void vj_event_get_sample_image ( void *ptr, const char format[], va_list ap )
}
+void vj_event_alpha_composite(void *ptr, const char format[], va_list ap)
+{
+ veejay_t *v = (veejay_t*) ptr;
+ int args[4];
+ char *str = NULL;
+
+ P_A(args,str,format,ap);
+
+ if( args[0] == 0 ) {
+ v->settings->clear_alpha = 0;
+ veejay_msg(VEEJAY_MSG_INFO,"Enabled alpha channel leak (no clear)");
+ } else if (args[0] == 1 ) {
+ v->settings->clear_alpha = 1;
+ veejay_msg(VEEJAY_MSG_INFO,"New alpha mask every frame (clearing)");
+ }
+}
+
diff --git a/veejay-current/veejay-server/veejay/vj-event.h b/veejay-current/veejay-server/veejay/vj-event.h
index 10d27951..1aa4f336 100644
--- a/veejay-current/veejay-server/veejay/vj-event.h
+++ b/veejay-current/veejay-server/veejay/vj-event.h
@@ -312,4 +312,5 @@ void vj_event_sub_render( void *ptr, const char format[], va_list ap );
void vj_event_send_shm_info( void *ptr, const char format[], va_list ap);
void vj_event_connect_split_shm( void *ptr, const char format[], va_list ap );
void vj_event_get_sample_image(void *ptr,const char format[],va_list ap );
+void vj_event_alpha_composite(void *ptr, const char format[], va_list ap );
#endif
diff --git a/veejay-current/veejay-server/veejay/vj-eventman.c b/veejay-current/veejay-server/veejay/vj-eventman.c
index 8b83388b..ef5e1825 100644
--- a/veejay-current/veejay-server/veejay/vj-eventman.c
+++ b/veejay-current/veejay-server/veejay/vj-eventman.c
@@ -2483,6 +2483,17 @@ void vj_init_vevo_events(void)
NULL );
+ index_map_[VIMS_ALPHA_COMPOSITE] = _new_event(
+ "%d",
+ VIMS_BEZERK,
+ "Enable or disable alpha channel clear every frame period",
+ vj_event_alpha_composite,
+ 1,
+ VIMS_ALLOW_ANY,
+ "0=on 1=off",
+ 0,
+ NULL );
+
index_map_[ VIMS_CONTINUOUS_PLAY ] = _new_event(
"%d",
diff --git a/veejay-current/veejay-server/veejay/vj-lib.h b/veejay-current/veejay-server/veejay/vj-lib.h
index b62a8e95..de29d079 100644
--- a/veejay-current/veejay-server/veejay/vj-lib.h
+++ b/veejay-current/veejay-server/veejay/vj-lib.h
@@ -199,6 +199,7 @@ typedef struct {
int auto_mute;
int pace_correction;
int splitscreen;
+ int clear_alpha;
} video_playback_setup;
typedef struct {
diff --git a/veejay-current/veejay-server/veejay/vj-perform.c b/veejay-current/veejay-server/veejay/vj-perform.c
index 14411cc0..aba0e703 100644
--- a/veejay-current/veejay-server/veejay/vj-perform.c
+++ b/veejay-current/veejay-server/veejay/vj-perform.c
@@ -2515,7 +2515,7 @@ static int vj_perform_sample_complete_buffers(veejay_t * info, int *hint444)
}
}
- if(clear_framebuffer__ == 1)
+ if(clear_framebuffer__ == 1 || info->settings->clear_alpha == 1)
{
if( frames[0]->stride[3] > 0 )
veejay_memset( frames[0]->data[3], 0, frames[0]->stride[3] * frames[0]->height );