centralize glib loading as used by racket/draw and Gtk racket/gui
This commit is contained in:
parent
bd0ca0bcec
commit
5aff70029a
|
@ -2,16 +2,17 @@
|
|||
(require ffi/unsafe
|
||||
ffi/unsafe/define
|
||||
ffi/unsafe/alloc
|
||||
racket/draw/unsafe/glib
|
||||
(only-in '#%foreign ctype-c->scheme)
|
||||
"../common/utils.rkt"
|
||||
"types.rkt")
|
||||
|
||||
(provide
|
||||
define-mz
|
||||
define-gobj
|
||||
define-glib
|
||||
(protect-out define-gtk
|
||||
define-gdk
|
||||
define-gobj
|
||||
define-glib
|
||||
define-gdk_pixbuf
|
||||
|
||||
g_object_ref
|
||||
|
@ -56,27 +57,6 @@
|
|||
(ffi-lib "libgdk_pixbuf-2.0-0")
|
||||
(ffi-lib "libgdk-win32-2.0-0")]
|
||||
[else (ffi-lib "libgdk-x11-2.0" '("0"))]))
|
||||
(define gobj-lib
|
||||
(case (system-type)
|
||||
[(windows)
|
||||
(ffi-lib "libgobject-2.0-0")]
|
||||
[(unix)
|
||||
(ffi-lib "libgobject-2.0" '("0"))]
|
||||
[else gdk-lib]))
|
||||
(define glib-lib
|
||||
(case (system-type)
|
||||
[(windows)
|
||||
(ffi-lib "libglib-2.0-0")]
|
||||
[(unix)
|
||||
(ffi-lib "libglib-2.0" '("0"))]
|
||||
[else gdk-lib]))
|
||||
(define gmodule-lib
|
||||
(case (system-type)
|
||||
[(windows)
|
||||
(ffi-lib "libgmodule-2.0-0")]
|
||||
[(unix)
|
||||
(ffi-lib "libgmodule-2.0" '("0"))]
|
||||
[else gdk-lib]))
|
||||
(define gdk_pixbuf-lib
|
||||
(case (system-type)
|
||||
[(windows)
|
||||
|
@ -91,9 +71,6 @@
|
|||
[else (ffi-lib "libgtk-x11-2.0" '("0"))]))
|
||||
|
||||
(define-ffi-definer define-gtk gtk-lib)
|
||||
(define-ffi-definer define-gobj gobj-lib)
|
||||
(define-ffi-definer define-glib glib-lib)
|
||||
(define-ffi-definer define-gmodule gmodule-lib)
|
||||
(define-ffi-definer define-gdk gdk-lib)
|
||||
(define-ffi-definer define-gdk_pixbuf gdk_pixbuf-lib)
|
||||
|
||||
|
|
30
collects/racket/draw/unsafe/glib.rkt
Normal file
30
collects/racket/draw/unsafe/glib.rkt
Normal file
|
@ -0,0 +1,30 @@
|
|||
#lang scheme/base
|
||||
(require ffi/unsafe
|
||||
ffi/unsafe/define
|
||||
"../private/libs.rkt")
|
||||
|
||||
(provide (protect-out
|
||||
define-glib
|
||||
define-gmodule
|
||||
define-gobj))
|
||||
|
||||
(define-runtime-lib glib-lib
|
||||
[(unix) (ffi-lib "libglib-2.0" '("0"))]
|
||||
[(macosx) (ffi-lib "libglib-2.0.0")]
|
||||
[(windows) (ffi-lib "libglib-2.0-0.dll")])
|
||||
|
||||
(define-runtime-lib gmodule-lib
|
||||
[(unix) (ffi-lib "libgmodule-2.0" '("0"))]
|
||||
[(macosx)
|
||||
(ffi-lib "libgmodule-2.0.0.dylib")]
|
||||
[(windows)
|
||||
(ffi-lib "libgmodule-2.0-0.dll")])
|
||||
|
||||
(define-runtime-lib gobj-lib
|
||||
[(unix) (ffi-lib "libgobject-2.0" '("0"))]
|
||||
[(macosx) (ffi-lib "libgobject-2.0.0")]
|
||||
[(windows) (ffi-lib "libgobject-2.0-0.dll")])
|
||||
|
||||
(define-ffi-definer define-glib glib-lib)
|
||||
(define-ffi-definer define-gmodule gmodule-lib)
|
||||
(define-ffi-definer define-gobj gobj-lib)
|
|
@ -4,6 +4,7 @@
|
|||
ffi/unsafe/alloc
|
||||
ffi/unsafe/atomic
|
||||
setup/dirs
|
||||
"glib.rkt"
|
||||
"cairo.rkt"
|
||||
"../private/utils.rkt"
|
||||
"../private/libs.rkt")
|
||||
|
@ -11,15 +12,9 @@
|
|||
(define-runtime-lib pango-lib
|
||||
[(unix) (ffi-lib "libpango-1.0" '("0"))]
|
||||
[(macosx)
|
||||
(ffi-lib "libglib-2.0.0.dylib")
|
||||
(ffi-lib "libgmodule-2.0.0.dylib")
|
||||
(ffi-lib "libgobject-2.0.0.dylib")
|
||||
(ffi-lib "libintl.8.dylib")
|
||||
(ffi-lib "libpango-1.0.0.dylib")]
|
||||
[(windows)
|
||||
(ffi-lib "libglib-2.0-0.dll")
|
||||
(ffi-lib "libgmodule-2.0-0.dll")
|
||||
(ffi-lib "libgobject-2.0-0.dll")
|
||||
(ffi-lib "libpango-1.0-0.dll")])
|
||||
|
||||
(define-runtime-lib pangowin32-lib
|
||||
|
@ -40,26 +35,12 @@
|
|||
(ffi-lib "libpangoft2-1.0-0.dll")
|
||||
(ffi-lib "libpangocairo-1.0-0.dll")])
|
||||
|
||||
(define-runtime-lib glib-lib
|
||||
[(unix) (ffi-lib "libglib-2.0" '("0"))]
|
||||
[(macosx) (ffi-lib "libglib-2.0.0")]
|
||||
[(windows) (ffi-lib "libglib-2.0-0.dll")])
|
||||
|
||||
(define-runtime-lib gobj-lib
|
||||
[(unix) (ffi-lib "libgobject-2.0" '("0"))]
|
||||
[(macosx) (ffi-lib "libgobject-2.0.0")]
|
||||
[(windows) (ffi-lib "libgobject-2.0-0.dll")])
|
||||
|
||||
(define-ffi-definer define-pango pango-lib
|
||||
#:provide provide)
|
||||
(define-ffi-definer define-pangocairo pangocairo-lib
|
||||
#:provide provide)
|
||||
(define-ffi-definer define-pangowin32 pangowin32-lib
|
||||
#:provide provide)
|
||||
(define-ffi-definer define-glib glib-lib
|
||||
#:provide provide)
|
||||
(define-ffi-definer define-gobj gobj-lib
|
||||
#:provide provide)
|
||||
|
||||
(define PangoContext (_cpointer 'PangoContext))
|
||||
(define PangoLayout (_cpointer 'PangoLayout))
|
||||
|
@ -124,7 +105,7 @@
|
|||
[glyphs _PangoGlyphString-pointer]))
|
||||
(provide (struct-out PangoGlyphItem))
|
||||
|
||||
|
||||
(provide g_object_unref g_free)
|
||||
(define-gobj g_object_unref (_fun _pointer -> _void)
|
||||
#:wrap (deallocator))
|
||||
(define-glib g_free (_fun _pointer -> _void)
|
||||
|
@ -230,7 +211,7 @@
|
|||
-> (begin0
|
||||
(for/list ([i (in-range len)])
|
||||
(ptr-ref fams PangoFontFamily i))
|
||||
(g_free fams))))
|
||||
(free fams))))
|
||||
|
||||
(define-pango pango_font_description_free (_fun PangoFontDescription -> _void)
|
||||
#:wrap (deallocator))
|
||||
|
|
|
@ -99,6 +99,7 @@ EXPORTS
|
|||
scheme_log
|
||||
scheme_log_message
|
||||
scheme_log_abort
|
||||
scheme_log_warning
|
||||
scheme_out_of_memory_abort
|
||||
scheme_wrong_count
|
||||
scheme_wrong_count_m
|
||||
|
|
|
@ -99,6 +99,7 @@ EXPORTS
|
|||
scheme_log
|
||||
scheme_log_message
|
||||
scheme_log_abort
|
||||
scheme_log_warning
|
||||
scheme_out_of_memory_abort
|
||||
scheme_wrong_count
|
||||
scheme_wrong_count_m
|
||||
|
|
|
@ -97,6 +97,7 @@ scheme_log_level_p
|
|||
scheme_log
|
||||
scheme_log_message
|
||||
scheme_log_abort
|
||||
scheme_log_warning
|
||||
scheme_out_of_memory_abort
|
||||
scheme_wrong_count
|
||||
scheme_wrong_count_m
|
||||
|
|
|
@ -97,6 +97,7 @@ scheme_log_level_p
|
|||
scheme_log
|
||||
scheme_log_message
|
||||
scheme_log_abort
|
||||
scheme_log_warning
|
||||
scheme_out_of_memory_abort
|
||||
scheme_wrong_count
|
||||
scheme_wrong_count_m
|
||||
|
|
|
@ -2872,6 +2872,11 @@ void scheme_log_abort(char *buffer)
|
|||
scheme_log_message(&logger, SCHEME_LOG_FATAL, buffer, strlen(buffer), scheme_false);
|
||||
}
|
||||
|
||||
void scheme_log_warning(char *buffer)
|
||||
{
|
||||
scheme_log_message(scheme_main_logger, SCHEME_LOG_WARNING, buffer, strlen(buffer), scheme_false);
|
||||
}
|
||||
|
||||
static int extract_level(const char *who, int which, int argc, Scheme_Object **argv)
|
||||
{
|
||||
Scheme_Object *v;
|
||||
|
|
|
@ -204,6 +204,7 @@ MZ_EXTERN void scheme_log(Scheme_Logger *logger, int level, int flags,
|
|||
char *msg, ...);
|
||||
MZ_EXTERN void scheme_log_message(Scheme_Logger *logger, int level, char *buffer, long len, Scheme_Object *data);
|
||||
MZ_EXTERN void scheme_log_abort(char *buffer);
|
||||
MZ_EXTERN void scheme_log_warning(char *buffer);
|
||||
MZ_EXTERN void scheme_out_of_memory_abort();
|
||||
|
||||
MZ_EXTERN void scheme_wrong_count(const char *name, int minc, int maxc,
|
||||
|
|
|
@ -161,6 +161,7 @@ void (*scheme_log)(Scheme_Logger *logger, int level, int flags,
|
|||
char *msg, ...);
|
||||
void (*scheme_log_message)(Scheme_Logger *logger, int level, char *buffer, long len, Scheme_Object *data);
|
||||
void (*scheme_log_abort)(char *buffer);
|
||||
void (*scheme_log_warning)(char *buffer);
|
||||
void (*scheme_out_of_memory_abort)();
|
||||
void (*scheme_wrong_count)(const char *name, int minc, int maxc,
|
||||
int argc, Scheme_Object **argv);
|
||||
|
|
|
@ -105,6 +105,7 @@
|
|||
scheme_extension_table->scheme_log = scheme_log;
|
||||
scheme_extension_table->scheme_log_message = scheme_log_message;
|
||||
scheme_extension_table->scheme_log_abort = scheme_log_abort;
|
||||
scheme_extension_table->scheme_log_warning = scheme_log_warning;
|
||||
scheme_extension_table->scheme_out_of_memory_abort = scheme_out_of_memory_abort;
|
||||
scheme_extension_table->scheme_wrong_count = scheme_wrong_count;
|
||||
scheme_extension_table->scheme_wrong_count_m = scheme_wrong_count_m;
|
||||
|
|
|
@ -105,6 +105,7 @@
|
|||
#define scheme_log (scheme_extension_table->scheme_log)
|
||||
#define scheme_log_message (scheme_extension_table->scheme_log_message)
|
||||
#define scheme_log_abort (scheme_extension_table->scheme_log_abort)
|
||||
#define scheme_log_warning (scheme_extension_table->scheme_log_warning)
|
||||
#define scheme_out_of_memory_abort (scheme_extension_table->scheme_out_of_memory_abort)
|
||||
#define scheme_wrong_count (scheme_extension_table->scheme_wrong_count)
|
||||
#define scheme_wrong_count_m (scheme_extension_table->scheme_wrong_count_m)
|
||||
|
|
Loading…
Reference in New Issue
Block a user