From 469484415de7e597521ff506925e0873596c2dd4 Mon Sep 17 00:00:00 2001 From: Pietro Gagliardi Date: Sun, 21 Apr 2019 12:24:19 -0400 Subject: [PATCH] Implemented uiInit() on Unix. --- common/init.c | 2 ++ meson.build | 2 +- unix/main.c | 23 +++++++++++++++++++++++ unix/meson.build | 19 +++++++++++++++++++ unix/uipriv_unix.h | 15 +++++++++++++++ 5 files changed, 60 insertions(+), 1 deletion(-) create mode 100644 unix/main.c create mode 100644 unix/meson.build create mode 100644 unix/uipriv_unix.h diff --git a/common/init.c b/common/init.c index 67e8c97b..05fcd649 100644 --- a/common/init.c +++ b/common/init.c @@ -18,6 +18,8 @@ static int checkInitErrorLengths(uiInitError *err, const char *initErrors[]) { const char **p; + if (initErrors == NULL) + return 1; for (p = initErrors; *p != NULL; p++) if (strlen(*p) > 255) { strcpy(err->Message, "[INTERNAL] uiInit() error too long: "); diff --git a/meson.build b/meson.build index 369f2a50..1290a470 100644 --- a/meson.build +++ b/meson.build @@ -148,7 +148,7 @@ elif libui_OS == 'darwin' subdir('darwin') install_headers('ui_darwin.h') else -# subdir('unix') + subdir('unix') install_headers('ui_unix.h') endif libui_libui = library('ui', libui_sources, diff --git a/unix/main.c b/unix/main.c new file mode 100644 index 00000000..728d0778 --- /dev/null +++ b/unix/main.c @@ -0,0 +1,23 @@ +// 6 april 2015 +#include "uipriv_unix.h" + +int uiInit(void *options, uiInitError *err) +{ + GError *gerr = NULL; + + if (!uiprivInitCheckParams(options, err, NULL)) + return 0; + + if (gtk_init_with_args(NULL, NULL, NULL, NULL, NULL, &gerr) == FALSE) { + strncpy(err->Message, gerr->message, 255); + g_error_free(gerr); + return 0; + } + + uiprivMarkInitialized(); + return 1; +} + +void uiUninit(void) +{ +} diff --git a/unix/meson.build b/unix/meson.build new file mode 100644 index 00000000..3ba81095 --- /dev/null +++ b/unix/meson.build @@ -0,0 +1,19 @@ +# 23 march 2019 + +libui_sources += [ + 'unix/main.c', +] + +libui_deps += [ + dependency('gtk+-3.0', + version: '>=3.10.0', + method: 'pkg-config', + required: true), + # We specify these as not required because some Unix systems include them with libc instead of providing them as separate files (thanks textshell and jpakkane in freenode #mesonbuild) + meson.get_compiler('c').find_library('m', + required: false), + meson.get_compiler('c').find_library('dl', + required: false), +] +libui_soversion = '0' +libui_rpath = '$ORIGIN' diff --git a/unix/uipriv_unix.h b/unix/uipriv_unix.h new file mode 100644 index 00000000..3cc56d0a --- /dev/null +++ b/unix/uipriv_unix.h @@ -0,0 +1,15 @@ +// 22 april 2015 +#define GLIB_VERSION_MIN_REQUIRED GLIB_VERSION_2_40 +#define GLIB_VERSION_MAX_ALLOWED GLIB_VERSION_2_40 +#define GDK_VERSION_MIN_REQUIRED GDK_VERSION_3_10 +#define GDK_VERSION_MAX_ALLOWED GDK_VERSION_3_10 +#include +#include +#include // see future.c +#include +#include +#include +#include +#include "../ui.h" +#include "../ui_unix.h" +#include "../common/uipriv.h"