diff --git a/veejay-current/sendVIMS/sendVIMS.c b/veejay-current/sendVIMS/sendVIMS.c index 79078571..d75b08ec 100644 --- a/veejay-current/sendVIMS/sendVIMS.c +++ b/veejay-current/sendVIMS/sendVIMS.c @@ -159,14 +159,14 @@ pd_msg_t *pd_msg_new(char *msg){ int n = 0; /* get 31 ints */ - n = sscanf(body, "%d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d", + n = sscanf(body, "%d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d", s+0, s+1, s+2, s+3, s+4, s+5, s+6, s+7, s+8, s+9, s+10, s+11, s+12,s+13,s+14, s+15, s+16,s+17,s+18, s+19, s+20,s+21,s+22, s+23, - s+24,s+25, s+26, s + 27, s + 28, s + 29, s + 30, s + 31, s + 32); + s+24,s+25, s+26, s + 27, s + 28, s + 29, s + 30, s + 31, s + 32, s + 33); /* create msg */ size_t est = n * sizeof(float) + sizeof(pd_msg_t); //@ malloc(sizeof(*m)) not ok diff --git a/veejay-current/veejay-client/share/gveejay.reloaded.glade b/veejay-current/veejay-client/share/gveejay.reloaded.glade index 4d026d27..be3e6c10 100644 --- a/veejay-current/veejay-client/share/gveejay.reloaded.glade +++ b/veejay-current/veejay-client/share/gveejay.reloaded.glade @@ -17587,7 +17587,7 @@ YUV (current) - + True False 0 diff --git a/veejay-current/veejay-client/src/common.h b/veejay-current/veejay-client/src/common.h index 8e96b720..a723728b 100644 --- a/veejay-current/veejay-client/src/common.h +++ b/veejay-current/veejay-client/src/common.h @@ -19,7 +19,7 @@ #ifndef GVRCOMMON_H #define GVRCOMMON_H #define STATUS_BYTES 150 -#define STATUS_TOKENS 34 +#define STATUS_TOKENS 35 #define STATUS_LENGTH 512 #define VEEJAY_CODENAME VERSION /* Status bytes */ @@ -54,7 +54,8 @@ #define FADE_ALPHA 29 #define SAMPLE_LOOP_STAT 30 #define SAMPLE_LOOP_STAT_STOP 31 -#define SAMPLE_INV_COUNT 32 +#define SAMPLE_INV_COUNT 33 +#define FEEDBACK 32 #define CURRENT_ENTRY 15 #define MODE_PLAIN 2 #define MODE_SAMPLE 0 diff --git a/veejay-current/veejay-client/src/utils.c b/veejay-current/veejay-client/src/utils.c index 584f3459..237fe883 100644 --- a/veejay-current/veejay-client/src/utils.c +++ b/veejay-current/veejay-client/src/utils.c @@ -28,7 +28,7 @@ int status_to_arr( char *status, int *array ) { - int n = sscanf(status, "%d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d", + return sscanf(status, "%d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d", array + 0, array + 1, array + 2, @@ -61,9 +61,9 @@ int status_to_arr( char *status, int *array ) array + 29, array + 30, array + 31, - array + 32 ); - - return n; + array + 32, + array + 33 + ); } void generator_to_arr( char *line, int *array) diff --git a/veejay-current/veejay-client/src/vj-api.c b/veejay-current/veejay-client/src/vj-api.c index d2d55601..a6effdf1 100644 --- a/veejay-current/veejay-client/src/vj-api.c +++ b/veejay-current/veejay-client/src/vj-api.c @@ -132,6 +132,28 @@ static struct {NULL}, }; +static struct +{ + const char *name; +} non_feedback_widgets[] = +{ + { "markerframe" }, + { "vbox633" }, + { "hbox910" }, + { "hbox27" }, + { "sample_bank_hbox" }, + { "button_samplebank_prev" }, + { "button_samplebank_next" }, + { "spin_samplebank_select" }, + { "hbox709" }, + { "sample_panel" }, + { "notebook15" }, + { "vbox623" }, + { "samplegrid_frame" }, + { "panels" }, + { NULL }, +}; + enum { TOOLTIP_TIMELINE = 0, @@ -3207,12 +3229,18 @@ static gboolean chain_update_row(GtkTreeModel * model, gui->uc.entry_tokens[ENTRY_CHANNEL]); enable_widget( "fx_m4" ); enable_widget( "fx_m3" ); + enable_widget( "transition_enabled" ); + enable_widget( "transition_loop" ); + enable_widget( "subrender_entry_toggle" ); } else { snprintf(tmp,sizeof(tmp),"%s"," "); disable_widget( "fx_m4" ); disable_widget( "fx_m3" ); + disable_widget( "transition_enabled" ); + disable_widget( "transition_loop" ); + disable_widget( "subrender_entry_toggle" ); } gchar *mixing = _utf8str(tmp); @@ -4626,7 +4654,7 @@ void setup_effectlist_info() void set_feedback_status() { - int len = 0; + int len = 0,i; single_vims(VIMS_GET_FEEDBACK); gchar *answer = recv_vims(3,&len); if(answer == NULL) @@ -6855,6 +6883,20 @@ static void update_globalinfo(int *history, int pm, int last_pm) if( last_pm != pm ) update_status_accessibility( last_pm, pm); + if( info->status_tokens[FEEDBACK] != history[FEEDBACK] ) { + if(info->status_tokens[FEEDBACK] == 1) { // when feedback is enabled + for( i = 0; non_feedback_widgets[i].name != NULL ; i ++ ) { + disable_widget( non_feedback_widgets[i].name ); + } + } + else { + for( i = 0; non_feedback_widgets[i].name != NULL ; i ++ ) { + enable_widget( non_feedback_widgets[i].name ); + } + } + set_toggle_button( "feedbackbutton", info->status_tokens[FEEDBACK]); + } + if( info->status_tokens[MACRO] != history[MACRO] ) { switch(info->status_tokens[MACRO]) @@ -8252,8 +8294,6 @@ int vj_gui_reconnect(char *hostname,char *group_name, int port_num) "Connection established with %s:%d (Track 0)", hostname,port_num); - sleep(1); //@ give it some time to settle ( at least 1 frame period ) - info->status_lock = 1; info->parameter_lock = 1; info->uc.expected_num_samples = -1; diff --git a/veejay-current/veejay-server/libsample/sampleadm.c b/veejay-current/veejay-server/libsample/sampleadm.c index 0ee1f3fb..5c664279 100644 --- a/veejay-current/veejay-server/libsample/sampleadm.c +++ b/veejay-current/veejay-server/libsample/sampleadm.c @@ -2755,7 +2755,7 @@ int sample_chain_entry_transition_now(int s1, int entry, int *type) { /* print sample status information into an allocated string str*/ //int sample_chain_sprint_status(int s1, int entry, int changed, int r_changed,char *str, // int frame) -int sample_chain_sprint_status( int s1,int tags,int cache,int sa,int ca, int pfps, int frame, int mode,int total_slots, int seq_rec,int curfps, uint32_t lo, uint32_t hi,int macro,char *str ) +int sample_chain_sprint_status( int s1,int tags,int cache,int sa,int ca, int pfps, int frame, int mode,int total_slots, int seq_rec,int curfps, uint32_t lo, uint32_t hi,int macro,char *str, int feedback ) { sample_info *sample; sample = sample_get(s1); @@ -2812,6 +2812,7 @@ int sample_chain_sprint_status( int s1,int tags,int cache,int sa,int ca, int pfp ptr = vj_sprintf( ptr, sample->fade_alpha );*ptr++ = ' '; ptr = vj_sprintf( ptr, sample->loop_stat); *ptr++ = ' '; ptr = vj_sprintf( ptr, sample->loop_stat_stop); *ptr++ = ' '; + ptr = vj_sprintf( ptr, feedback); *ptr ++ = ' '; ptr = vj_sprintf( ptr, tags ); return 0; } diff --git a/veejay-current/veejay-server/libsample/sampleadm.h b/veejay-current/veejay-server/libsample/sampleadm.h index cef8ac85..2af209d7 100644 --- a/veejay-current/veejay-server/libsample/sampleadm.h +++ b/veejay-current/veejay-server/libsample/sampleadm.h @@ -300,7 +300,7 @@ extern int sample_set_chain_channel(int s1, int position, int channel); //int sample_chain_replace(int s1, int position, int effect_id); -extern int sample_chain_sprint_status(int s1,int tags,int cache,int sa,int ca, int r, int f, int m, int t,int sr,int curfps,uint32_t lo, uint32_t hi, int macro,char *s ); +extern int sample_chain_sprint_status(int s1,int tags,int cache,int sa,int ca, int r, int f, int m, int t,int sr,int curfps,uint32_t lo, uint32_t hi, int macro,char *s, int feedback ); extern int sample_set_render_entry(int s1, int entry); extern int sample_get_render_entry(int s1); diff --git a/veejay-current/veejay-server/libstream/vj-tag.c b/veejay-current/veejay-server/libstream/vj-tag.c index 3580dfab..cb74bab4 100644 --- a/veejay-current/veejay-server/libstream/vj-tag.c +++ b/veejay-current/veejay-server/libstream/vj-tag.c @@ -3858,7 +3858,7 @@ int vj_tag_get_frame(int t1, VJFrame *dst, uint8_t * abuffer) //int vj_tag_sprint_status(int tag_id, int entry, int changed, char *str) -int vj_tag_sprint_status( int tag_id,int samples,int cache,int sa, int ca, int pfps,int frame,int mode,int ts,int seq_rec, int curfps, uint32_t lo, uint32_t hi, int macro, char *str ) +int vj_tag_sprint_status( int tag_id,int samples,int cache,int sa, int ca, int pfps,int frame,int mode,int ts,int seq_rec, int curfps, uint32_t lo, uint32_t hi, int macro, char *str, int feedback ) { vj_tag *tag; tag = vj_tag_get(tag_id); @@ -3915,6 +3915,7 @@ int vj_tag_sprint_status( int tag_id,int samples,int cache,int sa, int ca, int p ptr = vj_sprintf( ptr, tag->fade_alpha ); *ptr++ = ' '; ptr = vj_sprintf( ptr, tag->loop_stat ); *ptr++ = ' '; ptr = vj_sprintf( ptr, tag->loop_stat_stop); *ptr++ = ' '; + ptr = vj_sprintf( ptr, feedback ); *ptr++ = ' '; ptr = vj_sprintf( ptr, samples ); return 0; } diff --git a/veejay-current/veejay-server/libstream/vj-tag.h b/veejay-current/veejay-server/libstream/vj-tag.h index 47ccedf3..71c194ae 100644 --- a/veejay-current/veejay-server/libstream/vj-tag.h +++ b/veejay-current/veejay-server/libstream/vj-tag.h @@ -278,7 +278,7 @@ int vj_tag_enable(int t1); int vj_tag_disable(int t1); -int vj_tag_sprint_status(int tag_id, int tags,int cache,int sa, int ca, int r, int f, int m, int t,int seq_rec_id, int curfps, uint32_t lo, uint32_t hi, int macro,char *str ); +int vj_tag_sprint_status(int tag_id, int tags,int cache,int sa, int ca, int r, int f, int m, int t,int seq_rec_id, int curfps, uint32_t lo, uint32_t hi, int macro,char *str, int feedback ); uint8_t *vj_tag_get_cali_buffer(int t1, int type, int *total, int *len, int *uvlen); int vj_tag_generator_set_arg(int t1, int *values); diff --git a/veejay-current/veejay-server/veejay/liblavplayvj.c b/veejay-current/veejay-server/veejay/liblavplayvj.c index c4a0d883..be90bbba 100644 --- a/veejay-current/veejay-server/veejay/liblavplayvj.c +++ b/veejay-current/veejay-server/veejay/liblavplayvj.c @@ -1124,14 +1124,14 @@ static void veejay_pipe_write_status(veejay_t * info) pm = VJ_PLAYBACK_MODE_PATTERN; if( sample_chain_sprint_status - (info->uc->sample_id, tags,cache_used,info->seq->size,seq_cur,info->real_fps,settings->current_frame_num, pm, total_slots,info->seq->rec_id,curfps,settings->cycle_count[0],settings->cycle_count[1],mstatus,info->status_what ) != 0) + (info->uc->sample_id, tags,cache_used,info->seq->size,seq_cur,info->real_fps,settings->current_frame_num, pm, total_slots,info->seq->rec_id,curfps,settings->cycle_count[0],settings->cycle_count[1],mstatus,info->status_what, settings->feedback ) != 0) { veejay_msg(VEEJAY_MSG_ERROR, "Fatal error, tried to collect properties of invalid sample"); veejay_change_state( info, LAVPLAY_STATE_STOP ); } break; case VJ_PLAYBACK_MODE_PLAIN: - // 30 status symbols + // 33 status symbols { char *ptr = info->status_what; *ptr++ = ' '; @@ -1165,6 +1165,9 @@ static void veejay_pipe_write_status(veejay_t * info) *ptr++ = '0'; *ptr++ = ' '; *ptr++ = '0'; *ptr++ = ' '; *ptr++ = '0'; *ptr++ = ' '; + *ptr++ = '0'; *ptr++ = ' '; + *ptr++ = '0'; *ptr++ = ' '; + ptr = vj_sprintf(ptr, settings->feedback); *ptr++ = ' '; ptr = vj_sprintf(ptr, tags); *ptr++ = ' '; } break; @@ -1173,7 +1176,7 @@ static void veejay_pipe_write_status(veejay_t * info) mstatus = vj_macro_get_status( vj_tag_get_macro( info->uc->sample_id )); if( vj_tag_sprint_status( info->uc->sample_id,n_samples,cache_used,info->seq->size,seq_cur, info->real_fps, - settings->current_frame_num, info->uc->playback_mode,total_slots,info->seq->rec_id,curfps,settings->cycle_count[0],settings->cycle_count[1],mstatus, info->status_what ) != 0 ) + settings->current_frame_num, info->uc->playback_mode,total_slots,info->seq->rec_id,curfps,settings->cycle_count[0],settings->cycle_count[1],mstatus, info->status_what, settings->feedback ) != 0 ) { veejay_msg(VEEJAY_MSG_ERROR, "Invalid status"); }