Lines 3017-3022
Link Here
|
3017 |
|
3017 |
|
3018 |
} |
3018 |
} |
3019 |
|
3019 |
|
|
|
3020 |
static sig_atomic_t exit_flag = 0; |
3021 |
|
3020 |
gint idle_func(gpointer data) |
3022 |
gint idle_func(gpointer data) |
3021 |
{ |
3023 |
{ |
3022 |
gint time, t, length; |
3024 |
gint time, t, length; |
Lines 3026-3031
Link Here
|
3026 |
|
3028 |
|
3027 |
static GTimer *pause_timer = NULL; |
3029 |
static GTimer *pause_timer = NULL; |
3028 |
|
3030 |
|
|
|
3031 |
if (exit_flag) mainwin_quit_cb(); |
3032 |
|
3029 |
if (get_input_playing()) |
3033 |
if (get_input_playing()) |
3030 |
{ |
3034 |
{ |
3031 |
GDK_THREADS_ENTER(); |
3035 |
GDK_THREADS_ENTER(); |
Lines 3390-3395
Link Here
|
3390 |
exit(1); |
3394 |
exit(1); |
3391 |
} |
3395 |
} |
3392 |
|
3396 |
|
|
|
3397 |
/* Try to exit nicely when receiving a nice exit signal */ |
3398 |
void sigterm_handler(int sig) |
3399 |
{ |
3400 |
exit_flag = 1; |
3401 |
} |
3402 |
|
3393 |
static gboolean pposition_configure(GtkWidget *w, GdkEventConfigure *event, gpointer data) |
3403 |
static gboolean pposition_configure(GtkWidget *w, GdkEventConfigure *event, gpointer data) |
3394 |
{ |
3404 |
{ |
3395 |
gint x,y; |
3405 |
gint x,y; |
Lines 3521-3526
Link Here
|
3521 |
#endif |
3531 |
#endif |
3522 |
|
3532 |
|
3523 |
signal(SIGPIPE, SIG_IGN); /* for controlsocket.c */ |
3533 |
signal(SIGPIPE, SIG_IGN); /* for controlsocket.c */ |
|
|
3534 |
signal(SIGTERM, sigterm_handler); |
3535 |
signal(SIGINT, sigterm_handler); |
3524 |
signal(SIGSEGV, segfault_handler); |
3536 |
signal(SIGSEGV, segfault_handler); |
3525 |
g_thread_init(NULL); |
3537 |
g_thread_init(NULL); |
3526 |
gtk_set_locale(); |
3538 |
gtk_set_locale(); |