diff options
| author | Manolo Gouy <Manolo> | 2017-09-20 15:35:26 +0000 |
|---|---|---|
| committer | Manolo Gouy <Manolo> | 2017-09-20 15:35:26 +0000 |
| commit | 5cff9760e5de9ad2a5d4a770ed21ad764d9fb42f (patch) | |
| tree | 25d202b1c703796631ea36f1f3c4a99fdd1b43bb /src | |
| parent | da2d4a8ee53e49b21f315516dad2c96b232013a0 (diff) | |
X11 platform: Allow running with old (< 2.36) versions of libglib-2.0
These versions require calling g_type_init(). Newer versions don't.
git-svn-id: file:///fltk/svn/fltk/branches/branch-1.4@12464 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
Diffstat (limited to 'src')
| -rw-r--r-- | src/drivers/X11/Fl_X11_Screen_Driver.cxx | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/src/drivers/X11/Fl_X11_Screen_Driver.cxx b/src/drivers/X11/Fl_X11_Screen_Driver.cxx index 1795a93b3..5f84db6cf 100644 --- a/src/drivers/X11/Fl_X11_Screen_Driver.cxx +++ b/src/drivers/X11/Fl_X11_Screen_Driver.cxx @@ -1299,6 +1299,13 @@ static bool gnome_scale_factor(float& factor) { //g_variant_get_type_ftype g_variant_get_type_f = (g_variant_get_type_ftype)dlsym(glib, "g_variant_get_type"); // 2.24 // call dynamic lib functions + const unsigned *glib_major_version = (const unsigned *)dlsym(glib, "glib_major_version"); + const unsigned *glib_minor_version = (const unsigned *)dlsym(glib, "glib_minor_version"); + if (*glib_major_version >= 2 && *glib_minor_version < 36) { + typedef void (*init_ftype)(void); + init_ftype g_type_init_f = (init_ftype)dlsym(gobj, "g_type_init"); + g_type_init_f(); // necessary only if GLib version < 2.36 + } const char **known = g_settings_list_schemas_f(); // list of available GSettings schemas const char *schema; float ubuntu_f = 1, ubuntu_desktop_f = 1, gnome_f = 1; |
