Reimplemented uiMain() and friends on GTK+.

This commit is contained in:
Pietro Gagliardi 2019-04-28 14:52:39 -04:00
parent 10ab539ff0
commit bdf80516c5
2 changed files with 37 additions and 1 deletions

View File

@ -7,6 +7,8 @@
#include <sys/time.h>
#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;

View File

@ -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);
}