X-Git-Url: https://notaz.gp2x.de/cgi-bin/gitweb.cgi?a=blobdiff_plain;ds=sidebyside;f=linux%2Fgp2x.c;h=4a7c5564353b79f42690935da004fbc581cf15b0;hb=31d5892a4b40a3338568f71e59e030cfe2bbd5ff;hp=f5da1670c766a48ba09b454aac2fd6285eb54ffa;hpb=15b55b4ed53d8445bd6f0dd31a0e8fb72e05fa99;p=libpicofe.git diff --git a/linux/gp2x.c b/linux/gp2x.c index f5da167..4a7c556 100644 --- a/linux/gp2x.c +++ b/linux/gp2x.c @@ -3,6 +3,7 @@ #include #include #include +#include #include #include @@ -29,6 +30,7 @@ static const char *verstring = "PicoDrive " VERSION; // dummies char *ext_menu = 0, *ext_state = 0; +int mix_32_to_16l_level; /* gtk */ struct gtk_global_struct @@ -98,22 +100,12 @@ static gint key_release_event (GtkWidget *widget, GdkEventKey *event) return 0; } -static void *gtk_threadf(void *none) -{ - gtk_main(); - - printf("linux: gtk thread finishing\n"); - engineState = PGS_Quit; - - return NULL; -} - -static void gtk_initf(void) +static void *gtk_threadf(void *targ) { int argc = 0; char *argv[] = { "" }; GtkWidget *box; - pthread_t gtk_thread; + sem_t *sem = targ; g_thread_init (NULL); gdk_threads_init (); @@ -149,11 +141,27 @@ static void gtk_initf(void) gtk_widget_show (gtk_items.window); - // pthread_mutex_init (&thr_mutex, NULL); - // pthread_mutex_lock (&thr_mutex); - // pthread_mutex_init (&scanner_muttex, NULL); + sem_post(sem); + + gtk_main(); + + printf("linux: gtk thread finishing\n"); + exit(1); + + return NULL; +} + +static void gtk_initf(void) +{ + pthread_t gtk_thread; + sem_t sem; + sem_init(&sem, 0, 0); - pthread_create(>k_thread, NULL, gtk_threadf, NULL); + pthread_create(>k_thread, NULL, gtk_threadf, &sem); + pthread_detach(gtk_thread); + + sem_wait(&sem); + sem_close(&sem); } void finalize_image(guchar *pixels, gpointer data) @@ -421,5 +429,13 @@ void spend_cycles(int c) usleep(c/200); } +/* lprintf */ +void lprintf(const char *fmt, ...) +{ + va_list vl; + va_start(vl, fmt); + vprintf(fmt, vl); + va_end(vl); +}