diff --git a/gui-lib/mred/private/wx/gtk/gcwin.rkt b/gui-lib/mred/private/wx/gtk/gcwin.rkt index 2769d367c..701e9bdc3 100644 --- a/gui-lib/mred/private/wx/gtk/gcwin.rkt +++ b/gui-lib/mred/private/wx/gtk/gcwin.rkt @@ -86,6 +86,7 @@ (define-gdk gdk_display_flush _fpointer) (define-gdk gdk_window_show (_fun _GdkWindow -> _void)) +(define-gdk gdk_window_destroy (_fun _GdkWindow -> _void)) ;; Gtk2 (define-gdk gdk_draw_pixbuf _fpointer @@ -161,7 +162,7 @@ (define (free-gc-window win) (cond [use-x11? (XDestroyWindow (car win) (cdr win))] - [else (g_object_unref win)])) + [else (gdk_window_destroy win)])) (define (make-draw win gc-bitmap w h) (cond diff --git a/gui-test/tests/gracket/gc-blits.rkt b/gui-test/tests/gracket/gc-blits.rkt index 38b4865d6..56a33fad3 100644 --- a/gui-test/tests/gracket/gc-blits.rkt +++ b/gui-test/tests/gracket/gc-blits.rkt @@ -8,15 +8,18 @@ (define off (make-bitmap w h)) (send (send on make-dc) draw-rectangle 5 5 (- w 10) (- h 10)) -(send - (for/fold ([prev-f #f]) ([i (in-range 10)]) - (define f (new frame% [label "GC Blit"] [width 100] [height 100])) - (define c (new canvas% [parent f])) - (register-collecting-blit c 0 0 w h on off) - (send f show #t) - (collect-garbage) - (yield (system-idle-evt)) - (when prev-f (send prev-f show #f)) - f) - show #f) +(define final + (for/fold ([prev #f]) ([i (in-range 10)]) + (define f (new frame% [label "GC Blit"] [width 100] [height 100])) + (define c (new canvas% [parent f])) + (register-collecting-blit c 0 0 w h on off) + (send f show #t) + (collect-garbage) + (yield (system-idle-evt)) + (when prev + (unregister-collecting-blit (cdr prev)) + (send (car prev) show #f)) + (cons f c))) +(unregister-collecting-blit (cdr final)) +(send (car final) show #f)