optimize vims parsing, removed unnecessary memsets, some cleanup

This commit is contained in:
niels
2015-07-30 22:17:36 +02:00
parent 35bb18ef87
commit f264eb0a3a

View File

@@ -241,7 +241,7 @@ static struct { /* hardcoded keyboard layout (the default keys) */
{ VIMS_CHAIN_ENTRY_UP, SDLK_KP_PLUS, VIMS_MOD_NONE, "1" }, { VIMS_CHAIN_ENTRY_UP, SDLK_KP_PLUS, VIMS_MOD_NONE, "1" },
{ VIMS_CHAIN_ENTRY_CHANNEL_INC, SDLK_EQUALS, VIMS_MOD_NONE, NULL }, { VIMS_CHAIN_ENTRY_CHANNEL_INC, SDLK_EQUALS, VIMS_MOD_NONE, NULL },
{ VIMS_CHAIN_ENTRY_CHANNEL_DEC, SDLK_MINUS, VIMS_MOD_NONE, NULL }, { VIMS_CHAIN_ENTRY_CHANNEL_DEC, SDLK_MINUS, VIMS_MOD_NONE, NULL },
{ VIMS_CHAIN_ENTRY_SOURCE_TOGGLE, SDLK_SLASH, VIMS_MOD_NONE, NULL }, // stream/sample { VIMS_CHAIN_ENTRY_SOURCE_TOGGLE,SDLK_SLASH, VIMS_MOD_NONE, NULL }, // stream/sample
{ VIMS_CHAIN_ENTRY_INC_ARG, SDLK_PAGEUP, VIMS_MOD_NONE, "0 1" }, { VIMS_CHAIN_ENTRY_INC_ARG, SDLK_PAGEUP, VIMS_MOD_NONE, "0 1" },
{ VIMS_CHAIN_ENTRY_INC_ARG, SDLK_KP_PERIOD, VIMS_MOD_NONE, "1 1" }, { VIMS_CHAIN_ENTRY_INC_ARG, SDLK_KP_PERIOD, VIMS_MOD_NONE, "1 1" },
{ VIMS_CHAIN_ENTRY_INC_ARG, SDLK_PERIOD, VIMS_MOD_NONE, "2 1" }, { VIMS_CHAIN_ENTRY_INC_ARG, SDLK_PERIOD, VIMS_MOD_NONE, "2 1" },
@@ -298,11 +298,11 @@ static struct { /* hardcoded keyboard layout (the default keys) */
{ VIMS_FXLIST_INC, SDLK_UP, VIMS_MOD_NONE, "1" }, { VIMS_FXLIST_INC, SDLK_UP, VIMS_MOD_NONE, "1" },
{ VIMS_FXLIST_DEC, SDLK_DOWN, VIMS_MOD_NONE, "1" }, { VIMS_FXLIST_DEC, SDLK_DOWN, VIMS_MOD_NONE, "1" },
{ VIMS_FXLIST_ADD, SDLK_RETURN, VIMS_MOD_NONE, NULL }, { VIMS_FXLIST_ADD, SDLK_RETURN, VIMS_MOD_NONE, NULL },
{ VIMS_SET_SAMPLE_START, SDLK_LEFTBRACKET, VIMS_MOD_NONE, NULL }, { VIMS_SET_SAMPLE_START, SDLK_LEFTBRACKET,VIMS_MOD_NONE, NULL },
{ VIMS_SET_SAMPLE_END, SDLK_RIGHTBRACKET, VIMS_MOD_NONE, NULL }, { VIMS_SET_SAMPLE_END, SDLK_RIGHTBRACKET,VIMS_MOD_NONE, NULL },
{ VIMS_SAMPLE_SET_MARKER_START, SDLK_LEFTBRACKET, VIMS_MOD_ALT, NULL }, { VIMS_SAMPLE_SET_MARKER_START, SDLK_LEFTBRACKET,VIMS_MOD_ALT, NULL },
{ VIMS_SAMPLE_SET_MARKER_END, SDLK_RIGHTBRACKET, VIMS_MOD_ALT, NULL }, { VIMS_SAMPLE_SET_MARKER_END, SDLK_RIGHTBRACKET,VIMS_MOD_ALT, NULL },
{ VIMS_SAMPLE_TOGGLE_LOOP, SDLK_KP_MULTIPLY, VIMS_MOD_NONE,NULL }, { VIMS_SAMPLE_TOGGLE_LOOP, SDLK_KP_MULTIPLY,VIMS_MOD_NONE,NULL },
{ VIMS_SWITCH_SAMPLE_STREAM, SDLK_ESCAPE, VIMS_MOD_NONE, NULL }, { VIMS_SWITCH_SAMPLE_STREAM, SDLK_ESCAPE, VIMS_MOD_NONE, NULL },
{ VIMS_PRINT_INFO, SDLK_HOME, VIMS_MOD_NONE, NULL }, { VIMS_PRINT_INFO, SDLK_HOME, VIMS_MOD_NONE, NULL },
{ VIMS_OSL, SDLK_HOME, VIMS_MOD_CTRL, NULL }, { VIMS_OSL, SDLK_HOME, VIMS_MOD_CTRL, NULL },
@@ -407,15 +407,6 @@ __z++ ;\
}\ }\
} }
/* P_A16: Parse 16 integer arguments. This macro is used in 1 function */
#define P_A16(a,c,d)\
{\
int __z = 0;\
while(*c) { \
if(__z > 15 ) break; \
switch(*c++) { case 'd': a[__z] = va_arg(d, int); __z++ ; break; }\
}}\
#define DUMP_ARG(a)\ #define DUMP_ARG(a)\
if(sizeof(a)>0){\ if(sizeof(a)>0){\
@@ -506,7 +497,6 @@ char *get_embedded_help( int fx_mode, int play_mode, int fx_entry, int id )
{ {
return NULL; // return get_arr_embedded_help( embedded_help ); FIXME someday return NULL; // return get_arr_embedded_help( embedded_help ); FIXME someday
} else { } else {
veejay_memset(msg,0,sizeof(msg));
int fx_id = 0; int fx_id = 0;
if( play_mode == VJ_PLAYBACK_MODE_TAG ) { if( play_mode == VJ_PLAYBACK_MODE_TAG ) {
fx_id = vj_tag_get_effect_any(id,fx_entry); fx_id = vj_tag_get_effect_any(id,fx_entry);
@@ -1131,12 +1121,11 @@ void vj_event_parse_kf( veejay_t *v, char *msg, int len )
/* parse a message received from network */ /* parse a message received from network */
void vj_event_parse_bundle(veejay_t *v, char *msg ) void vj_event_parse_bundle(veejay_t *v, char *msg )
{ {
char atomic_msg[256];
int num_msg = 0; int num_msg = 0;
int offset = 3; int offset = 3;
int i = 0; int i = 0;
if ( msg[offset] == ':' ) if ( msg[offset] == ':' )
{ {
int j = 0; int j = 0;
@@ -1159,14 +1148,15 @@ void vj_event_parse_bundle(veejay_t *v, char *msg )
return; return;
} }
offset+=1; /* skip # */ offset += 1; /* skip # */
for( i = 1; i <= num_msg ; i ++ ) /* iterate through message bundle and invoke parse_msg */ for( i = 1; i <= num_msg ; i ++ )
{ {
char atomic_msg[256];
int found_end_of_msg = 0; int found_end_of_msg = 0;
int total_msg_len = strlen(msg); int total_msg_len = strlen(msg);
veejay_memset( atomic_msg,0,sizeof(atomic_msg) );
veejay_memset( atomic_msg, 0 , sizeof(atomic_msg) ); /* clear */
while( (offset+j) < total_msg_len) while( (offset+j) < total_msg_len)
{ {
if(msg[offset+j] == '}') if(msg[offset+j] == '}')
@@ -1194,7 +1184,6 @@ void vj_event_dump()
vj_event_vevo_dump(); vj_event_vevo_dump();
vj_osc_dump(); vj_osc_dump();
} }
typedef struct { typedef struct {
@@ -1437,7 +1426,7 @@ static char *inline_str_to_str(int flags, char *msg)
char *res = NULL; char *res = NULL;
int len = strlen(msg); int len = strlen(msg);
if( len <= 0 ) if( len <= 0 )
return res; return NULL;
if( (flags & VIMS_LONG_PARAMS) ) /* copy rest of message */ if( (flags & VIMS_LONG_PARAMS) ) /* copy rest of message */
{ {
@@ -1447,9 +1436,8 @@ static char *inline_str_to_str(int flags, char *msg)
else else
{ {
char str[256]; char str[256];
veejay_memset(str,0, sizeof(str) ); if(sscanf( msg, "%256s", str ) <= 0 )
if(sscanf( msg, "%s", str ) <= 0 ) return NULL;
return res;
res = vj_strndup( str, 255 ); res = vj_strndup( str, 255 );
} }
return res; return res;
@@ -1458,7 +1446,6 @@ static char *inline_str_to_str(int flags, char *msg)
int vj_event_parse_msg( void *ptr, char *msg, int msg_len ) int vj_event_parse_msg( void *ptr, char *msg, int msg_len )
{ {
veejay_t *v = (veejay_t*)ptr; veejay_t *v = (veejay_t*)ptr;
char head[5] = { 0,0,0,0,0};
int net_id = 0; int net_id = 0;
int np = 0; int np = 0;
@@ -1475,16 +1462,14 @@ int vj_event_parse_msg( void *ptr, char *msg, int msg_len )
} }
veejay_memcpy(head,msg,4); if( strncasecmp( msg, "BUN", 3 ) == 0 )
if( strncasecmp( head, "bun", 3 ) == 0 )
{ {
veejay_chomp_str( msg, &msg_len ); veejay_chomp_str( msg, &msg_len );
vj_event_parse_bundle( v, msg ); vj_event_parse_bundle( v, msg );
return 1; return 1;
} }
if( strncasecmp( head, "key", 3 ) == 0 ) if( strncasecmp( msg, "KEY", 3 ) == 0 )
{ {
vj_event_parse_kf( v, msg, msg_len ); vj_event_parse_kf( v, msg, msg_len );
return 1; return 1;
@@ -1494,7 +1479,7 @@ int vj_event_parse_msg( void *ptr, char *msg, int msg_len )
msg_len --; msg_len --;
/* try to scan VIMS id */ /* try to scan VIMS id */
if ( sscanf( head, "%03d", &net_id ) != 1 ) if ( sscanf( msg, "%03d", &net_id ) != 1 )
{ {
veejay_msg(VEEJAY_MSG_ERROR, "Error parsing VIMS selector"); veejay_msg(VEEJAY_MSG_ERROR, "Error parsing VIMS selector");
return 0; return 0;
@@ -1506,23 +1491,6 @@ int vj_event_parse_msg( void *ptr, char *msg, int msg_len )
return 0; return 0;
} }
/* verify format
if( msg[3] != 0x3a || msg[msg_len] != ';' )
{
veejay_msg(VEEJAY_MSG_ERROR, "Syntax error in VIMS message");
if( msg[3] != 0x3a )
{
veejay_msg(VEEJAY_MSG_ERROR, "\tExpected ':' after VIMS selector");
return 0;
}
if( msg[msg_len] != ';' )
{
veejay_msg(VEEJAY_MSG_ERROR, "\tExpected ';' to terminate VIMS message");
return 0;
}
}
*/
if ( net_id >= VIMS_BUNDLE_START && net_id < VIMS_BUNDLE_END ) if ( net_id >= VIMS_BUNDLE_START && net_id < VIMS_BUNDLE_END )
{ {
vj_msg_bundle *bun = vj_event_bundle_get(net_id ); vj_msg_bundle *bun = vj_event_bundle_get(net_id );
@@ -1541,11 +1509,12 @@ int vj_event_parse_msg( void *ptr, char *msg, int msg_len )
v->rmodes[ v->uc->current_link ] = -1000; v->rmodes[ v->uc->current_link ] = -1000;
} }
*/ */
int i_args[16];
np = vj_event_vevo_get_num_args( net_id ); np = vj_event_vevo_get_num_args( net_id );
if ( msg_len <= MSG_MIN_LEN ) if ( msg_len <= MSG_MIN_LEN )
{ {
int i_args[16];
int i = 0; int i = 0;
while( i < np ) while( i < np )
{ {
@@ -1566,12 +1535,9 @@ int vj_event_parse_msg( void *ptr, char *msg, int msg_len )
char *fmt = vj_event_vevo_get_event_format( net_id ); char *fmt = vj_event_vevo_get_event_format( net_id );
int flags = vj_event_vevo_get_flags( net_id ); int flags = vj_event_vevo_get_flags( net_id );
int i = 0; int i = 0;
int i_args[16];
char *str = NULL; char *str = NULL;
int fmt_offset = 1; int fmt_offset = 1;
char *arg_str = NULL; char *arg_str = NULL;
veejay_memset( i_args, 0, sizeof(i_args) );
int n = 4; int n = 4;
if( msg[msg_len-4] == ';' ) if( msg[msg_len-4] == ';' )
n = 5; n = 5;
@@ -1650,8 +1616,8 @@ int vj_event_parse_msg( void *ptr, char *msg, int msg_len )
if( valid_for_macro(net_id)) if( valid_for_macro(net_id))
store_macro_( v,msg, v->settings->current_frame_num ); store_macro_( v,msg, v->settings->current_frame_num );
} }
vj_event_fire_net_event( v, net_id, str, i_args, i, 0 );
vj_event_fire_net_event( v, net_id, str, i_args, i, 0 );
if(fmt) free(fmt); if(fmt) free(fmt);
if(arg_str) free(arg_str); if(arg_str) free(arg_str);
@@ -1770,7 +1736,6 @@ void vj_event_update_remote(void *ptr)
void vj_event_commit_bundle( veejay_t *v, int key_num, int key_mod) void vj_event_commit_bundle( veejay_t *v, int key_num, int key_mod)
{ {
char bundle[4096]; char bundle[4096];
veejay_memset(bundle,0,sizeof(bundle));
vj_event_create_effect_bundle(v, bundle, key_num, key_mod ); vj_event_create_effect_bundle(v, bundle, key_num, key_mod );
} }
@@ -2035,7 +2000,7 @@ void vj_event_xml_parse_config( veejay_t *v, xmlDocPtr doc, xmlNodePtr cur )
int c = 0; int c = 0;
char sample_list[1024]; char sample_list[1024];
veejay_memset(sample_list,0,sizeof(sample_list)); veejay_memset(sample_list,0,sizeof(sample_list));
// todo: editlist loading ; veejay restart // FIXME editlist loading ; veejay restart
while( cur != NULL ) while( cur != NULL )
{ {
@@ -4063,7 +4028,6 @@ void vj_event_sample_set_position( void *ptr, const char format[], va_list ap )
sample_get_chain_source(v->uc->sample_id, entry); sample_get_chain_source(v->uc->sample_id, entry);
int cha = sample_get_chain_channel( v->uc->sample_id, entry ); int cha = sample_get_chain_channel( v->uc->sample_id, entry );
// if( src == VJ_TAG_TYPE_NONE ) {
int pos = sample_get_offset( cha,entry ); int pos = sample_get_offset( cha,entry );
pos += args[2]; pos += args[2];
@@ -4071,9 +4035,6 @@ void vj_event_sample_set_position( void *ptr, const char format[], va_list ap )
sample_set_offset( cha,entry, pos ); sample_set_offset( cha,entry, pos );
veejay_msg(VEEJAY_MSG_INFO, "Changed frame position to %d for sample %d on FX entry %d (only)", pos,cha,entry ); veejay_msg(VEEJAY_MSG_INFO, "Changed frame position to %d for sample %d on FX entry %d (only)", pos,cha,entry );
// }
} }
void vj_event_sample_skip_frame(void *ptr, const char format[], va_list ap) void vj_event_sample_skip_frame(void *ptr, const char format[], va_list ap)
@@ -4457,7 +4418,6 @@ void vj_event_sample_rec_start( void *ptr, const char format[], va_list ap)
return; return;
} }
int format_ = _recorder_format; int format_ = _recorder_format;
if(format_==-1) if(format_==-1)
{ {
@@ -4622,7 +4582,6 @@ void vj_event_sample_rec_stop(void *ptr, const char format[], va_list ap)
} }
} }
void vj_event_sample_set_num_loops(void *ptr, const char format[], va_list ap) void vj_event_sample_set_num_loops(void *ptr, const char format[], va_list ap)
{ {
veejay_t *v = (veejay_t *)ptr; veejay_t *v = (veejay_t *)ptr;
@@ -4652,12 +4611,10 @@ void vj_event_sample_set_num_loops(void *ptr, const char format[], va_list ap)
} }
} }
void vj_event_sample_rel_start(void *ptr, const char format[], va_list ap) void vj_event_sample_rel_start(void *ptr, const char format[], va_list ap)
{ {
veejay_t *v = (veejay_t *)ptr; veejay_t *v = (veejay_t *)ptr;
int args[4]; int args[4];
//video_playback_setup *s = v->settings;
char *str = NULL; char *str = NULL;
int s_start; int s_start;
int s_end; int s_end;
@@ -4847,8 +4804,6 @@ void vj_event_sample_clear_all(void *ptr, const char format[], va_list ap)
veejay_msg(VEEJAY_MSG_INFO, "Deleted all samples."); veejay_msg(VEEJAY_MSG_INFO, "Deleted all samples.");
} }
void vj_event_chain_enable(void *ptr, const char format[], va_list ap) void vj_event_chain_enable(void *ptr, const char format[], va_list ap)
{ {
veejay_t *v = (veejay_t*)ptr; veejay_t *v = (veejay_t*)ptr;
@@ -4866,7 +4821,6 @@ void vj_event_chain_enable(void *ptr, const char format[], va_list ap)
p_invalid_mode(); p_invalid_mode();
} }
veejay_msg(VEEJAY_MSG_INFO, "Enabled effect chain"); veejay_msg(VEEJAY_MSG_INFO, "Enabled effect chain");
} }
void vj_event_stream_set_length( void *ptr, const char format[], va_list ap) void vj_event_stream_set_length( void *ptr, const char format[], va_list ap)
@@ -4878,14 +4832,14 @@ void vj_event_stream_set_length( void *ptr, const char format[], va_list ap)
if(STREAM_PLAYING(v)) if(STREAM_PLAYING(v))
{ {
if(args[0] > 0 && args[0] < 999999 ) if(args[0] > 0 && args[0] < 2160000 ) //fictious length is maximum 1 day
{ {
vj_tag_set_n_frames(v->uc->sample_id, args[0]); vj_tag_set_n_frames(v->uc->sample_id, args[0]);
v->settings->max_frame_num = args[0]; v->settings->max_frame_num = args[0];
constrain_stream( v, v->uc->sample_id, (long) args[0]); constrain_stream( v, v->uc->sample_id, (long) args[0]);
} }
else else
veejay_msg(VEEJAY_MSG_ERROR, "Ficticious length must be 0 - 999999"); veejay_msg(VEEJAY_MSG_ERROR, "Ficticious length must be 0 - 2160000");
} }
else else
p_invalid_mode(); p_invalid_mode();
@@ -5039,7 +4993,6 @@ void vj_event_sample_chain_disable(void *ptr, const char format[], va_list ap)
vj_tag_set_effect_status(args[0], 0); vj_tag_set_effect_status(args[0], 0);
veejay_msg(VEEJAY_MSG_INFO, "Effect chain on stream %d is disabled",args[0]); veejay_msg(VEEJAY_MSG_INFO, "Effect chain on stream %d is disabled",args[0]);
} }
} }
@@ -5199,7 +5152,6 @@ void vj_event_chain_entry_disable_video(void *ptr, const char format[], va_list
else else
p_no_tag(args[0]); p_no_tag(args[0]);
} }
} }
void vj_event_chain_fade_follow(void *ptr, const char format[], va_list ap ) void vj_event_chain_fade_follow(void *ptr, const char format[], va_list ap )
@@ -5252,7 +5204,6 @@ void vj_event_manual_chain_fade(void *ptr, const char format[], va_list ap)
vj_tag_get_fader_val(args[0])); vj_tag_get_fader_val(args[0]));
} }
} }
} }
void vj_event_chain_fade_in(void *ptr, const char format[], va_list ap) void vj_event_chain_fade_in(void *ptr, const char format[], va_list ap)
@@ -5293,14 +5244,14 @@ void vj_event_chain_fade_in(void *ptr, const char format[], va_list ap)
} }
} }
} }
} }
void vj_event_chain_fade_out(void *ptr, const char format[], va_list ap) void vj_event_chain_fade_out(void *ptr, const char format[], va_list ap)
{ {
veejay_t *v = (veejay_t*)ptr; veejay_t *v = (veejay_t*)ptr;
int args[2]; int args[2];
char *str = NULL; P_A(args,str,format,ap); char *str = NULL;
P_A(args,str,format,ap);
if(args[0] == 0 && (SAMPLE_PLAYING(v) || STREAM_PLAYING(v)) ) if(args[0] == 0 && (SAMPLE_PLAYING(v) || STREAM_PLAYING(v)) )
{ {
@@ -5328,8 +5279,6 @@ void vj_event_chain_fade_out(void *ptr, const char format[], va_list ap)
} }
} }
void vj_event_chain_clear(void *ptr, const char format[], va_list ap) void vj_event_chain_clear(void *ptr, const char format[], va_list ap)
{ {
veejay_t *v = (veejay_t*)ptr; veejay_t *v = (veejay_t*)ptr;
@@ -5372,15 +5321,14 @@ void vj_event_chain_clear(void *ptr, const char format[], va_list ap)
} }
v->uc->chain_changed = 1; v->uc->chain_changed = 1;
} }
} }
void vj_event_chain_entry_del(void *ptr, const char format[], va_list ap) void vj_event_chain_entry_del(void *ptr, const char format[], va_list ap)
{ {
veejay_t *v = (veejay_t*)ptr; veejay_t *v = (veejay_t*)ptr;
int args[2]; int args[2];
char *str = NULL; P_A(args,str,format,ap); char *str = NULL;
P_A(args,str,format,ap);
if(SAMPLE_PLAYING(v)) if(SAMPLE_PLAYING(v))
{ {
@@ -5438,7 +5386,8 @@ void vj_event_chain_entry_set(void *ptr, const char format[], va_list ap)
{ {
veejay_t *v = (veejay_t*)ptr; veejay_t *v = (veejay_t*)ptr;
int args[3]; int args[3];
char *str = NULL; P_A(args,str,format,ap); char *str = NULL;
P_A(args,str,format,ap);
if(SAMPLE_PLAYING(v)) if(SAMPLE_PLAYING(v))
{ {
@@ -5555,6 +5504,7 @@ void vj_event_entry_up(void *ptr, const char format[], va_list ap)
} }
} }
void vj_event_entry_down(void *ptr, const char format[] ,va_list ap) void vj_event_entry_down(void *ptr, const char format[] ,va_list ap)
{ {
veejay_t *v = (veejay_t*) ptr; veejay_t *v = (veejay_t*) ptr;
@@ -5584,16 +5534,20 @@ void vj_event_entry_down(void *ptr, const char format[] ,va_list ap)
c, vj_effect_get_description(effect_id)); c, vj_effect_get_description(effect_id));
} }
} }
void vj_event_chain_entry_set_narg_val(void *ptr,const char format[], va_list ap) void vj_event_chain_entry_set_narg_val(void *ptr,const char format[], va_list ap)
{ {
int args[SAMPLE_MAX_PARAMETERS]; int args[SAMPLE_MAX_PARAMETERS];
veejay_t *v = (veejay_t*)ptr;
veejay_memset(args,0,sizeof(int) * SAMPLE_MAX_PARAMETERS);
char str[4096]; char str[4096];
P_A(args,str,format,ap);
int value = 0; int value = 0;
veejay_t *v = (veejay_t*)ptr;
if( sscanf( str, "%d" , &value ) != 1 ) { veejay_memset(args,0,sizeof(int) * SAMPLE_MAX_PARAMETERS);
P_A(args,str,format,ap);
if( sscanf( str, "%d" , &value ) != 1 )
{
veejay_msg(VEEJAY_MSG_ERROR, "Invalid value." ); veejay_msg(VEEJAY_MSG_ERROR, "Invalid value." );
return; return;
} }
@@ -5627,7 +5581,8 @@ void vj_event_chain_entry_set_narg_val(void *ptr,const char format[], va_list ap
} }
v->uc->chain_changed = 1; v->uc->chain_changed = 1;
} }
} else if( STREAM_PLAYING(v)) }
else if( STREAM_PLAYING(v))
{ {
if(args[0] == 0) args[0] = v->uc->sample_id; if(args[0] == 0) args[0] = v->uc->sample_id;
if(args[1] == -1) args[1] = vj_tag_get_selected_entry(v->uc->sample_id); if(args[1] == -1) args[1] = vj_tag_get_selected_entry(v->uc->sample_id);
@@ -5662,15 +5617,17 @@ void vj_event_chain_entry_set_narg_val(void *ptr,const char format[], va_list ap
void vj_event_chain_entry_preset(void *ptr,const char format[], va_list ap) void vj_event_chain_entry_preset(void *ptr,const char format[], va_list ap)
{ {
int args[SAMPLE_MAX_PARAMETERS];
veejay_t *v = (veejay_t*)ptr;
veejay_memset(args,0,sizeof(int) * SAMPLE_MAX_PARAMETERS);
char str[4096];
P_A(args,str,format,ap);
long int tmp = 0; long int tmp = 0;
char *end = str;
int base = 10; int base = 10;
int index = 3; // sample, chain, fx_id int index = 3; // sample, chain, fx_id
int args[SAMPLE_MAX_PARAMETERS];
char str[1024]; //FIXME string parameters
char *end = str;
veejay_t *v = (veejay_t*)ptr;
veejay_memset(args,0,sizeof(int) * SAMPLE_MAX_PARAMETERS);
P_A(args,str,format,ap);
while( (tmp = strtol( end, &end, base ))) { while( (tmp = strtol( end, &end, base ))) {
args[index] = (int) tmp; args[index] = (int) tmp;
index ++; index ++;
@@ -5683,7 +5640,7 @@ void vj_event_chain_entry_preset(void *ptr,const char format[], va_list ap)
if(args[1] == -1) args[1] = sample_get_selected_entry(v->uc->sample_id); if(args[1] == -1) args[1] = sample_get_selected_entry(v->uc->sample_id);
if(v_chi(args[1])) if(v_chi(args[1]))
{ {
veejay_msg(VEEJAY_MSG_ERROR, "Chain index out of boundaries: %d", args[1]); veejay_msg(VEEJAY_MSG_ERROR, "Chain index out of bounds: %d", args[1]);
return; return;
} }
@@ -5701,7 +5658,6 @@ void vj_event_chain_entry_preset(void *ptr,const char format[], va_list ap)
{ {
if(vj_effect_valid_value(real_id,i,args[(i+args_offset)]) ) if(vj_effect_valid_value(real_id,i,args[(i+args_offset)]) )
{ {
if(sample_set_effect_arg(args[0],args[1],i,args[(i+args_offset)] )==-1) if(sample_set_effect_arg(args[0],args[1],i,args[(i+args_offset)] )==-1)
{ {
veejay_msg(VEEJAY_MSG_ERROR, "Error setting argument %d value %d for %s", veejay_msg(VEEJAY_MSG_ERROR, "Error setting argument %d value %d for %s",
@@ -5720,7 +5676,7 @@ void vj_event_chain_entry_preset(void *ptr,const char format[], va_list ap)
if(args[1] == -1) args[1] = vj_tag_get_selected_entry(v->uc->sample_id); if(args[1] == -1) args[1] = vj_tag_get_selected_entry(v->uc->sample_id);
if(v_chi(args[1])) if(v_chi(args[1]))
{ {
veejay_msg(VEEJAY_MSG_ERROR, "Chain index out of boundaries: %d", args[1]); veejay_msg(VEEJAY_MSG_ERROR, "Chain index out of bounds %d", args[1]);
return; return;
} }
@@ -5756,7 +5712,6 @@ void vj_event_chain_entry_preset(void *ptr,const char format[], va_list ap)
} }
} }
} }
} }
void vj_event_chain_entry_src_toggle(void *ptr, const char format[], va_list ap) void vj_event_chain_entry_src_toggle(void *ptr, const char format[], va_list ap)
@@ -5803,7 +5758,6 @@ void vj_event_chain_entry_src_toggle(void *ptr, const char format[], va_list ap)
{ {
veejay_set_frame(v, sample_get_startFrame(v->uc->sample_id)); veejay_set_frame(v, sample_get_startFrame(v->uc->sample_id));
} }
} }
if(STREAM_PLAYING(v)) if(STREAM_PLAYING(v))
@@ -7979,7 +7933,7 @@ void vj_event_create_effect_bundle(veejay_t * v, char *buf, int key_id, int key_
int effect_id = y; int effect_id = y;
if(effect_id != -1) if(effect_id != -1)
{ {
char bundle[200]; char bundle[512];
int np = vj_effect_get_num_params(y); int np = vj_effect_get_num_params(y);
sprintf(bundle, "%03d:0 %d %d", VIMS_CHAIN_ENTRY_SET_PRESET,i, effect_id ); sprintf(bundle, "%03d:0 %d %d", VIMS_CHAIN_ENTRY_SET_PRESET,i, effect_id );
for (j = 0; j < np; j++) for (j = 0; j < np; j++)
@@ -7995,8 +7949,9 @@ void vj_event_create_effect_bundle(veejay_t * v, char *buf, int key_id, int key_
veejay_strncat( bundle, svalue, strlen(svalue)); veejay_strncat( bundle, svalue, strlen(svalue));
} }
} }
veejay_strncpy( blob+bunlen, bundle,strlen(bundle)); int blen = strlen(bundle);
bunlen += strlen(bundle); veejay_strncpy( blob+bunlen, bundle,blen);
bunlen += blen;
} }
} }
} }
@@ -8007,19 +7962,18 @@ void vj_event_create_effect_bundle(veejay_t * v, char *buf, int key_id, int key_
if(event_id <= 0 ) if(event_id <= 0 )
{ {
veejay_msg(VEEJAY_MSG_ERROR, "Cannot add more bundles"); veejay_msg(VEEJAY_MSG_ERROR, "Cannot add more bundles");
free(blob);
return;
} }
else {
vj_msg_bundle *m = vj_event_bundle_new( buf, event_id); vj_msg_bundle *m = vj_event_bundle_new( buf, event_id);
if(!m) if(!m)
{ {
veejay_msg(VEEJAY_MSG_ERROR, "Unable to create new Bundle"); veejay_msg(VEEJAY_MSG_ERROR, "Unable to create new Bundle");
free(blob);
return;
} }
else {
if(!vj_event_bundle_store(m)) if(!vj_event_bundle_store(m))
veejay_msg(VEEJAY_MSG_ERROR, "Error storing Bundle %d", event_id); veejay_msg(VEEJAY_MSG_ERROR, "Error storing Bundle %d", event_id);
}
}
free(blob); free(blob);
} }
@@ -9086,7 +9040,6 @@ void vj_event_send_editlist ( void *ptr, const char format[], va_list ap )
void vj_event_send_frame ( void *ptr, const char format[], va_list ap ) void vj_event_send_frame ( void *ptr, const char format[], va_list ap )
{ {
veejay_t *v = (veejay_t*) ptr; veejay_t *v = (veejay_t*) ptr;
int i = 0; int i = 0;
int ok = 0; int ok = 0;
for( i = 0; i < 8; i ++ ) { for( i = 0; i < 8; i ++ ) {
@@ -9176,8 +9129,6 @@ void vj_event_send_effect_list ( void *ptr, const char format[], va_list ap )
free(priv_msg); free(priv_msg);
} }
int vj_event_load_bundles(char *bundle_file) int vj_event_load_bundles(char *bundle_file)
{ {
FILE *fd; FILE *fd;
@@ -9639,7 +9590,6 @@ void vj_event_get_shm( void *ptr, const char format[], va_list ap )
{ {
veejay_t *v = (veejay_t*)ptr; veejay_t *v = (veejay_t*)ptr;
char tmp[32]; char tmp[32];
veejay_memset(tmp,0,sizeof(tmp));
if(!v->shm) { if(!v->shm) {
snprintf(tmp,sizeof(tmp)-1,"%016d",0); snprintf(tmp,sizeof(tmp)-1,"%016d",0);
SEND_MSG(v, tmp ); SEND_MSG(v, tmp );
@@ -10018,8 +9968,6 @@ void vj_event_add_subtitle( void *ptr, const char format[], va_list ap )
text[k] = 0x20; text[k] = 0x20;
} }
if( args[3] < 0 || args[4] < 0 || if( args[3] < 0 || args[4] < 0 ||
args[3] >= v->video_output_width || args[3] >= v->video_output_width ||
args[4] >= v->video_output_height ) args[4] >= v->video_output_height )
@@ -10031,11 +9979,11 @@ void vj_event_add_subtitle( void *ptr, const char format[], va_list ap )
vj_font_set_dict( v->font, dict ); vj_font_set_dict( v->font, dict );
int id = vj_font_new_text( v->font, text, (long) args[1], (long)args[2], args[0] ); int id = vj_font_new_text( v->font, (unsigned char*) text, (long) args[1], (long)args[2], args[0] );
vj_font_set_position( v->font, args[3] ,args[4] ); vj_font_set_position( v->font, args[3] ,args[4] );
char newslot[50]; char newslot[16];
sprintf(newslot, "%05d%05d",5, id ); sprintf(newslot, "%05d%05d",5, id );
SEND_MSG(v,newslot); SEND_MSG(v,newslot);
} }
@@ -10054,13 +10002,11 @@ void vj_event_upd_subtitle( void *ptr, const char format[], va_list ap )
} }
void *dict = select_dict( v, v->uc->sample_id ); void *dict = select_dict( v, v->uc->sample_id );
if(!dict) if(dict)
{ {
return;
}
vj_font_set_dict( v->font, dict ); vj_font_set_dict( v->font, dict );
vj_font_update_text( v->font, (long) args[1], (long) args[2], args[0], text ); vj_font_update_text( v->font, (long) args[1], (long) args[2], args[0], text );
}
} }
void vj_event_del_subtitle( void *ptr, const char format[], va_list ap ) void vj_event_del_subtitle( void *ptr, const char format[], va_list ap )
@@ -10077,15 +10023,11 @@ void vj_event_del_subtitle( void *ptr, const char format[], va_list ap )
void *dict = select_dict( v, v->uc->sample_id ); void *dict = select_dict( v, v->uc->sample_id );
if(!dict) if(dict)
{ {
return;
}
vj_font_set_dict( v->font, dict ); vj_font_set_dict( v->font, dict );
vj_font_del_text( v->font, args[0] ); vj_font_del_text( v->font, args[0] );
}
} }
void vj_event_font_set_position( void *ptr, const char format[], va_list ap ) void vj_event_font_set_position( void *ptr, const char format[], va_list ap )
@@ -10101,14 +10043,13 @@ void vj_event_font_set_position( void *ptr, const char format[], va_list ap )
} }
void *dict = select_dict( v, v->uc->sample_id ); void *dict = select_dict( v, v->uc->sample_id );
if(!dict) if(dict)
{ {
return;
}
vj_font_set_dict( v->font, dict ); vj_font_set_dict( v->font, dict );
vj_font_set_position( v->font, args[0] ,args[1] ); vj_font_set_position( v->font, args[0] ,args[1] );
}
} }
void vj_event_font_set_color( void *ptr, const char format[], va_list ap ) void vj_event_font_set_color( void *ptr, const char format[], va_list ap )
{ {
int args[6]; int args[6];
@@ -10122,36 +10063,29 @@ void vj_event_font_set_color( void *ptr, const char format[], va_list ap )
} }
void *dict = select_dict( v, v->uc->sample_id ); void *dict = select_dict( v, v->uc->sample_id );
if(!dict) if(dict)
{ {
return;
}
vj_font_set_dict( v->font, dict ); vj_font_set_dict( v->font, dict );
switch( args[4] ) switch( args[4] )
{ {
case 0: case 0:
vj_font_set_outline_and_border( vj_font_set_outline_and_border(v->font, args[0],args[1] );
v->font, args[0],args[1] );
//outline, //use_bg
break; break;
case 1: case 1:
vj_font_set_fgcolor( v->font, vj_font_set_fgcolor( v->font,args[0],args[1],args[2],args[3] );
args[0],args[1],args[2],args[3] );
break; break;
case 2: case 2:
vj_font_set_bgcolor( v->font, vj_font_set_bgcolor( v->font,args[0],args[1],args[2],args[3] );
args[0],args[1],args[2],args[3] );
break; break;
case 3: case 3:
vj_font_set_lncolor( v->font, vj_font_set_lncolor( v->font,args[0],args[1],args[2],args[3] );
args[0],args[1],args[2],args[3] );
break; break;
default: default:
veejay_msg(0, "Invalid mode. Use 0=outline/border 1=FG,2=BG,3=LN" ); veejay_msg(0, "Invalid mode. Use 0=outline/border 1=FG,2=BG,3=LN" );
break; break;
} }
}
} }
void vj_event_font_set_size_and_font( void *ptr, const char format[], va_list ap ) void vj_event_font_set_size_and_font( void *ptr, const char format[], va_list ap )
{ {
@@ -10166,13 +10100,11 @@ void vj_event_font_set_size_and_font( void *ptr, const char format[], va_list ap
} }
void *dict = select_dict( v, v->uc->sample_id ); void *dict = select_dict( v, v->uc->sample_id );
if(!dict) if(dict)
{ {
return;
}
vj_font_set_dict( v->font, dict ); vj_font_set_dict( v->font, dict );
vj_font_set_size_and_font(v->font, args[0],args[1]); vj_font_set_size_and_font(v->font, args[0],args[1]);
}
} }
#endif #endif
@@ -10297,7 +10229,6 @@ void vj_event_get_sample_sequences( void *ptr, const char format[], va_list a
} }
char *s_print_buf = get_print_buf( 32 + (MAX_SEQUENCES*4)); char *s_print_buf = get_print_buf( 32 + (MAX_SEQUENCES*4));
sprintf(s_print_buf, "%06d%04d%04d%04d", sprintf(s_print_buf, "%06d%04d%04d%04d",
( 12 + (4*MAX_SEQUENCES)), ( 12 + (4*MAX_SEQUENCES)),
v->seq->current,MAX_SEQUENCES, v->seq->active ); v->seq->current,MAX_SEQUENCES, v->seq->active );