Invalidate drawings when not updated per change regions.
authorMatt Birkholz <matt@birkholz.chandler.az.us>
Wed, 14 Sep 2011 20:34:02 +0000 (13:34 -0700)
committerMatt Birkholz <matt@birkholz.chandler.az.us>
Wed, 14 Sep 2011 20:34:02 +0000 (13:34 -0700)
src/gtk-screen/gtk-screen.scm

index 2fa9c2bd6401cd9e370dc5f09bc744ccf6dcf88e..a9e374fd3a63d94bc833614f4e2ef59bd745d1fb 100644 (file)
@@ -1351,10 +1351,12 @@ USA.
    (lambda ()
      (cond
       ((display-style/no-screen-output? display-style)
+       (invalidate-all-drawings! screen)
        (%trace "; (update-screen! <gtk-screen>) done: no-output\n")
        'NO-OUTPUT)
       ((eq? (screen-visibility screen) 'OBSCURED)
        (update-name screen)
+       (invalidate-all-drawings! screen)
        (%trace "; (update-screen! <gtk-screen>) done: completely obscured\n")
        'INVISIBLE)
       (else
@@ -1376,6 +1378,12 @@ USA.
             (%trace "; (update-screen! <gtk-screen>) done: halted\n")
             #f)))))))
 
+(define (invalidate-all-drawings! screen)
+  (%trace ";   invalidated all drawings\n")
+  (for-each (lambda (entry)
+             (set-buffer-drawing-valid?! (cdr entry) #f))
+           (gtk-screen-drawings screen)))
+
 (define-integrable with-screen-in-update
   (named-lambda (with-screen-in-update screen thunk)
     (if (screen-in-update? screen)