centralize glib loading as used by racket/draw and Gtk racket/gui

This commit is contained in:
Matthew Flatt 2010-11-26 11:20:15 -07:00
parent bd0ca0bcec
commit 5aff70029a
12 changed files with 49 additions and 48 deletions

View File

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

View 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)

View File

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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

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

View File

@ -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,

View File

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

View File

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

View File

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