mirror of
https://github.com/game-stop/veejay.git
synced 2025-12-22 07:40:00 +01:00
issue #90, bring up relauncher window when connection to veejay is lost and solved some memory leaks
This commit is contained in:
@@ -280,6 +280,8 @@ int main(int argc, char *argv[])
|
|||||||
gveejay_preview(preview);
|
gveejay_preview(preview);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
restart_me:
|
||||||
|
|
||||||
if( launcher )
|
if( launcher )
|
||||||
{
|
{
|
||||||
reloaded_launcher( hostname, port_num );
|
reloaded_launcher( hostname, port_num );
|
||||||
@@ -295,6 +297,15 @@ int main(int argc, char *argv[])
|
|||||||
gtk_main_iteration();
|
gtk_main_iteration();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
vj_event_list_free();
|
||||||
|
|
||||||
|
if( gveejay_relaunch() ) {
|
||||||
|
launcher = 1;
|
||||||
|
reloaded_restart();
|
||||||
|
reloaded_show_launcher();
|
||||||
|
goto restart_me;
|
||||||
|
}
|
||||||
|
|
||||||
veejay_msg(VEEJAY_MSG_INFO, "See you!");
|
veejay_msg(VEEJAY_MSG_INFO, "See you!");
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
|
|||||||
@@ -900,9 +900,14 @@ void multitrack_close_track( void *data )
|
|||||||
gtk_widget_set_sensitive_(GTK_WIDGET(mt->view[mt->selected]->toggle), FALSE );
|
gtk_widget_set_sensitive_(GTK_WIDGET(mt->view[mt->selected]->toggle), FALSE );
|
||||||
gtk_image_clear( GTK_IMAGE(mt->view[mt->selected]->area ) );
|
gtk_image_clear( GTK_IMAGE(mt->view[mt->selected]->area ) );
|
||||||
mt->view[mt->selected]->status_lock = 0;
|
mt->view[mt->selected]->status_lock = 0;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void multitrack_disconnect(void *data)
|
||||||
|
{
|
||||||
|
multitracker_t *mt = (multitracker_t*) data;
|
||||||
|
//release connection to veejay
|
||||||
|
gvr_track_disconnect( mt->preview, 0 );
|
||||||
}
|
}
|
||||||
|
|
||||||
int multrack_audoadd( void *data, char *hostname, int port_num )
|
int multrack_audoadd( void *data, char *hostname, int port_num )
|
||||||
|
|||||||
@@ -7,7 +7,7 @@ void *multitrack_new(
|
|||||||
GtkWidget *win,GtkWidget *box,GtkWidget *msg,GtkWidget *button,
|
GtkWidget *win,GtkWidget *box,GtkWidget *msg,GtkWidget *button,
|
||||||
gint max_w,gint max_h,
|
gint max_w,gint max_h,
|
||||||
GtkWidget *main_preview_area,void *gui,int threads);
|
GtkWidget *main_preview_area,void *gui,int threads);
|
||||||
|
void multitrack_disconnect(void *data);
|
||||||
void multitrack_set_logo(void *data , GtkWidget *img);
|
void multitrack_set_logo(void *data , GtkWidget *img);
|
||||||
int multitrack_add_track( void *data );
|
int multitrack_add_track( void *data );
|
||||||
void multitrack_close_track( void *data );
|
void multitrack_close_track( void *data );
|
||||||
|
|||||||
@@ -86,7 +86,7 @@
|
|||||||
#ifdef STRICT_CHECKING
|
#ifdef STRICT_CHECKING
|
||||||
#include <assert.h>
|
#include <assert.h>
|
||||||
#endif
|
#endif
|
||||||
|
#define RUP8(num)(((num)+8)&~8)
|
||||||
#ifdef ARCH_X86_64
|
#ifdef ARCH_X86_64
|
||||||
static gpointer castIntToGpointer( int val )
|
static gpointer castIntToGpointer( int val )
|
||||||
{
|
{
|
||||||
@@ -1556,7 +1556,7 @@ effect_constr* _effect_new( char *effect_line )
|
|||||||
continue;
|
continue;
|
||||||
|
|
||||||
ec->hints[p] = (value_hint*) vj_calloc(sizeof(value_hint));
|
ec->hints[p] = (value_hint*) vj_calloc(sizeof(value_hint));
|
||||||
ec->hints[p]->description = (char**) vj_calloc(sizeof(char*) * (ec->max[p]+1) );
|
ec->hints[p]->description = (char**) vj_calloc(sizeof(char*) * (ec->max[p]+2) );
|
||||||
for(q = 0; q <= ec->max[p]; q ++ )
|
for(q = 0; q <= ec->max[p]; q ++ )
|
||||||
{
|
{
|
||||||
int value_hint = 0;
|
int value_hint = 0;
|
||||||
@@ -1580,6 +1580,23 @@ void _effect_free( effect_constr *effect )
|
|||||||
{
|
{
|
||||||
if(effect)
|
if(effect)
|
||||||
{
|
{
|
||||||
|
int p;
|
||||||
|
for( p = 0; p < effect->num_arg; p ++ ) {
|
||||||
|
free( effect->param_description[p] );
|
||||||
|
}
|
||||||
|
if( effect->hints ) {
|
||||||
|
for( p = 0; p < effect->num_arg; p ++ ) {
|
||||||
|
if( effect->hints[p] == NULL )
|
||||||
|
continue;
|
||||||
|
int q;
|
||||||
|
for( q = 0; effect->hints[p]->description[q] != NULL; q ++ ) {
|
||||||
|
free( effect->hints[p]->description[q] );
|
||||||
|
}
|
||||||
|
free( effect->hints[p]->description );
|
||||||
|
free( effect->hints[p] );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
free(effect);
|
free(effect);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -2137,6 +2154,11 @@ gboolean gveejay_running()
|
|||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
gboolean gveejay_relaunch()
|
||||||
|
{
|
||||||
|
return (info->watch.state == STATE_QUIT ? FALSE: TRUE);
|
||||||
|
}
|
||||||
|
|
||||||
gboolean gveejay_quit( GtkWidget *widget, gpointer user_data)
|
gboolean gveejay_quit( GtkWidget *widget, gpointer user_data)
|
||||||
{
|
{
|
||||||
if(!running_g_)
|
if(!running_g_)
|
||||||
@@ -2202,7 +2224,7 @@ void update_gui();
|
|||||||
int veejay_get_sample_image(int id, int type, int wid, int hei)
|
int veejay_get_sample_image(int id, int type, int wid, int hei)
|
||||||
{
|
{
|
||||||
multi_vims( VIMS_GET_SAMPLE_IMAGE, "%d %d %d %d", id, type, wid, hei );
|
multi_vims( VIMS_GET_SAMPLE_IMAGE, "%d %d %d %d", id, type, wid, hei );
|
||||||
uint8_t *data_buffer = (uint8_t*) vj_malloc( sizeof(uint8_t) * wid * hei * 3);
|
uint8_t *data_buffer = (uint8_t*) vj_malloc( sizeof(uint8_t) * RUP8(wid * hei * 3));
|
||||||
int sample_id = 0;
|
int sample_id = 0;
|
||||||
int sample_type =0;
|
int sample_type =0;
|
||||||
gint bw = 0;
|
gint bw = 0;
|
||||||
@@ -2426,7 +2448,7 @@ static gchar *recv_vims_args(int slen, int *bytes_written, int *arg0, int *arg1)
|
|||||||
unsigned char *result = NULL;
|
unsigned char *result = NULL;
|
||||||
if( ret <= 0 || len <= 0 || slen <= 0)
|
if( ret <= 0 || len <= 0 || slen <= 0)
|
||||||
return (gchar*)result;
|
return (gchar*)result;
|
||||||
result = (unsigned char*) vj_calloc(sizeof(unsigned char) * (len + 1) );
|
result = (unsigned char*) vj_calloc(sizeof(unsigned char) * RUP8(len + 1 + 16) );
|
||||||
*bytes_written = vj_client_read( info->client, V_CMD, result, len );
|
*bytes_written = vj_client_read( info->client, V_CMD, result, len );
|
||||||
if( *bytes_written == -1 )
|
if( *bytes_written == -1 )
|
||||||
reloaded_schedule_restart();
|
reloaded_schedule_restart();
|
||||||
@@ -6307,6 +6329,11 @@ int veejay_update_multitrack( void *ptr )
|
|||||||
|
|
||||||
if( s->status_list[s->master] == NULL ) {
|
if( s->status_list[s->master] == NULL ) {
|
||||||
info->watch.w_state = STATE_STOPPED;
|
info->watch.w_state = STATE_STOPPED;
|
||||||
|
free(s->status_list);
|
||||||
|
free(s->img_list );
|
||||||
|
free(s->widths);
|
||||||
|
free(s->heights);
|
||||||
|
free(s);
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -7347,6 +7374,8 @@ void vj_gui_wipe()
|
|||||||
{
|
{
|
||||||
veejay_memset(info->history_tokens[i],0, sizeof(int) * (STATUS_TOKENS+1));
|
veejay_memset(info->history_tokens[i],0, sizeof(int) * (STATUS_TOKENS+1));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
reset_samplebank();
|
||||||
}
|
}
|
||||||
|
|
||||||
GtkWidget *new_bank_pad(GtkWidget *box)
|
GtkWidget *new_bank_pad(GtkWidget *box)
|
||||||
@@ -7403,6 +7432,21 @@ void vj_gui_set_geom( int x, int y )
|
|||||||
geo_pos_[1] = y;
|
geo_pos_[1] = y;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void vj_event_list_free()
|
||||||
|
{
|
||||||
|
int i;
|
||||||
|
for( i = 0; i < VIMS_MAX; i ++ ) {
|
||||||
|
if( vj_event_list[i].format )
|
||||||
|
free(vj_event_list[i].format);
|
||||||
|
if( vj_event_list[i].descr )
|
||||||
|
free(vj_event_list[i].descr);
|
||||||
|
if( vj_event_list[i].args )
|
||||||
|
free(vj_event_list[i].args);
|
||||||
|
}
|
||||||
|
|
||||||
|
veejay_memset( vj_event_list, 0, sizeof(vj_event_list));
|
||||||
|
}
|
||||||
|
|
||||||
void vj_gui_init(char *glade_file,
|
void vj_gui_init(char *glade_file,
|
||||||
int launcher,
|
int launcher,
|
||||||
char *hostname,
|
char *hostname,
|
||||||
@@ -7894,6 +7938,15 @@ void reloaded_launcher(char *hostname, int port_num)
|
|||||||
update_spin_value( "button_portnum", port_num );
|
update_spin_value( "button_portnum", port_num );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void reloaded_show_launcher()
|
||||||
|
{
|
||||||
|
info->watch.state = STATE_WAIT_FOR_USER;
|
||||||
|
info->launch_sensitive = TRUE;
|
||||||
|
|
||||||
|
GtkWidget *mw = glade_xml_get_widget_(info->main_window,"veejay_connection" );
|
||||||
|
gtk_widget_show(mw);
|
||||||
|
}
|
||||||
|
|
||||||
void reloaded_schedule_restart()
|
void reloaded_schedule_restart()
|
||||||
{
|
{
|
||||||
info->watch.state = STATE_STOPPED;
|
info->watch.state = STATE_STOPPED;
|
||||||
@@ -7908,6 +7961,8 @@ void reloaded_restart()
|
|||||||
gtk_widget_hide( mw );
|
gtk_widget_hide( mw );
|
||||||
|
|
||||||
vj_gui_wipe();
|
vj_gui_wipe();
|
||||||
|
|
||||||
|
multitrack_disconnect(info->mt);
|
||||||
/*
|
/*
|
||||||
//@ bring up the launcher window
|
//@ bring up the launcher window
|
||||||
gtk_widget_show( cd );
|
gtk_widget_show( cd );
|
||||||
@@ -7946,6 +8001,7 @@ gboolean is_alive( int *do_sync )
|
|||||||
{
|
{
|
||||||
if(info->client)
|
if(info->client)
|
||||||
vj_gui_disconnect();
|
vj_gui_disconnect();
|
||||||
|
vj_gui_wipe();
|
||||||
// reloaded_schedule_restart();
|
// reloaded_schedule_restart();
|
||||||
reloaded_restart();
|
reloaded_restart();
|
||||||
*do_sync = 0;
|
*do_sync = 0;
|
||||||
@@ -8224,8 +8280,6 @@ void free_samplebank(void)
|
|||||||
veejay_memset( info->sample_banks, 0, sizeof(sample_bank_t*) * NUM_BANKS );
|
veejay_memset( info->sample_banks, 0, sizeof(sample_bank_t*) * NUM_BANKS );
|
||||||
}
|
}
|
||||||
|
|
||||||
#define RUP8(num)(((num)+8)&~8)
|
|
||||||
|
|
||||||
void setup_samplebank(gint num_cols, gint num_rows, GtkWidget *pad, int *idx, int *idy)
|
void setup_samplebank(gint num_cols, gint num_rows, GtkWidget *pad, int *idx, int *idy)
|
||||||
{
|
{
|
||||||
GdkRectangle result;
|
GdkRectangle result;
|
||||||
|
|||||||
@@ -65,13 +65,14 @@ void vj_gui_theme_setup(int default_theme);
|
|||||||
|
|
||||||
int vj_img_cb(GdkPixbuf *img );
|
int vj_img_cb(GdkPixbuf *img );
|
||||||
void vj_fork_or_connect_veejay();
|
void vj_fork_or_connect_veejay();
|
||||||
|
void vj_event_list_free();
|
||||||
gboolean gveejay_running();
|
gboolean gveejay_running();
|
||||||
|
gboolean gveejay_relaunch();
|
||||||
int gveejay_user_preview();
|
int gveejay_user_preview();
|
||||||
void gveejay_preview(int p);
|
void gveejay_preview(int p);
|
||||||
int gveejay_restart();
|
int gveejay_restart();
|
||||||
int gveejay_update();
|
int gveejay_update();
|
||||||
int gveejay_time_to_sync( void *ptr );
|
int gveejay_time_to_sync( void *ptr );
|
||||||
int update_gveejay();
|
int update_gveejay();
|
||||||
|
void reloaded_show_launcher();
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
Reference in New Issue
Block a user