From bdf80516c524aa6ae5d6370d0eaea6def0ed827c Mon Sep 17 00:00:00 2001 From: Pietro Gagliardi Date: Sun, 28 Apr 2019 14:52:39 -0400 Subject: [PATCH] Reimplemented uiMain() and friends on GTK+. --- test/testing_darwinunix.c | 4 +++- unix/main.c | 34 ++++++++++++++++++++++++++++++++++ 2 files changed, 37 insertions(+), 1 deletion(-) diff --git a/test/testing_darwinunix.c b/test/testing_darwinunix.c index 94ae9bf9..f0fb1d9f 100644 --- a/test/testing_darwinunix.c +++ b/test/testing_darwinunix.c @@ -7,6 +7,8 @@ #include #include "testing.h" +// TODO testingTimers after this fails are wrong on GTK+ + static jmp_buf timeout_ret; static void onTimeout(int sig) @@ -17,7 +19,7 @@ static void onTimeout(int sig) void testingprivRunWithTimeout(testingT *t, const char *file, long line, int64_t timeout, void (*f)(testingT *t, void *data), void *data, const char *comment, int failNowOnError) { char *timeoutstr; - sig_t prevsig; + void (*prevsig)(int); struct itimerval timer, prevtimer; int setitimerError = 0; diff --git a/unix/main.c b/unix/main.c index dc63d1ec..87624119 100644 --- a/unix/main.c +++ b/unix/main.c @@ -17,3 +17,37 @@ int uiInit(void *options, uiInitError *err) uiprivMarkInitialized(); return 1; } + +void uiMain(void) +{ + gtk_main(); +} + +void uiQuit(void) +{ + gtk_main_quit(); +} + +struct queued { + void (*f)(void *); + void *data; +}; + +static gboolean doqueued(gpointer data) +{ + struct queued *q = (struct queued *) data; + + (*(q->f))(q->data); + g_free(q); + return FALSE; +} + +void uiQueueMain(void (*f)(void *data), void *data) +{ + struct queued *q; + + q = g_new0(struct queued, 1); + q->f = f; + q->data = data; + gdk_threads_add_idle(doqueued, q); +}