-- Leo's gemini proxy

-- Connecting to git.thebackupbox.net:1965...

-- Connected

-- Sending request

-- Meta line: 20 text/gemini

repo: rxvt-unicode-sixel
action: commit
revision:
path_from:
revision_from: 9db39f40ae3f70654e557f2b55e6402271a3b597:
path_to:
revision_to:

git.thebackupbox.net

rxvt-unicode-sixel

git://git.thebackupbox.net/rxvt-unicode-sixel

commit 9db39f40ae3f70654e557f2b55e6402271a3b597
Author: Sasha Vasko <sashavasko@gmail.com>
Date:   Tue Jan 15 23:21:18 2008 +0000

    improved handling of background rendering on startup and fixed situation of no WM or non-reparenting WM

diff --git a/src/command.C b/src/command.C

index 72ce79672b97249f606e3e38a52901210136b46b..

index ..cbcf23df485e709c923935fcd810a027961bd902 100644

--- a/src/command.C
+++ b/src/command.C
@@ -1440,7 +1440,7 @@ rxvt_term::x_cb (XEvent &ev)
         break;

       case ConfigureNotify:
-      /* fprintf (stderr, "ConfigureNotify for %X, parent is %X, geom is %dx%d%+d%+d, old geom was %dx%d\n",
+       /*fprintf (stderr, "ConfigureNotify for %X, parent is %X, geom is %dx%d%+d%+d, old geom was %dx%d\n",
               ev.xconfigure.window, parent[0], ev.xconfigure.width, ev.xconfigure.height, ev.xconfigure.x, ev.xconfigure.y,
               szHint.width, szHint.height); */
         if (ev.xconfigure.window == parent[0])
@@ -1457,7 +1457,12 @@ rxvt_term::x_cb (XEvent &ev)
               {
 #ifdef HAVE_BG_PIXMAP
                 if (bgPixmap.window_position_sensitive ())
-                  update_background ();
+                  {
+                    if (mapped)
+                      update_background ();
+                    else
+                      bgPixmap.invalidate ();
+                  }
 #endif
               }

@@ -1487,6 +1492,22 @@ rxvt_term::x_cb (XEvent &ev)
         break;

       case MapNotify:
+#ifdef HAVE_BG_PIXMAP
+        /* This is needed spcifically to fix the case of no window manager or a
+         * non-reparenting window manager. In those cases we never get first
+         * ConfigureNotify. Also that speeds startup under normal WM, by taking
+         * care of multiplicity of ConfigureNotify events arriwing while WM does
+         * reparenting.
+         * We should not render background immidiately, as there could be several
+         * ConfigureNotify's to follow. Lets take care of all of them in one scoop
+         * by scheduling background redraw as soon as we can, but giving a short
+         * bit of time for ConfigureNotifies to arrive.
+         * We should render background PRIOR to drawing any text, but AFTER all
+         * of ConfigureNotifys for the best results.
+         */
+        if (bgPixmap.flags & bgPixmap_t::isInvalid)
+          update_background_ev.start (0.025);
+#endif
         mapped = 1;
 #ifdef TEXT_BLINK
         text_blink_ev.start ();
diff --git a/src/main.C b/src/main.C

index fac13c93b573157bd75c8714564a156f9f443d60..

index ..9decb261b27b760f6b5e67e63a1c03e681feaddc 100644

--- a/src/main.C
+++ b/src/main.C
@@ -513,6 +513,7 @@ rxvt_term::init (int argc, const char *const *argv, stringvec *envv)
 #ifdef HAVE_BG_PIXMAP
   {
     bgPixmap.set_target (this);
+    bgPixmap.invalidate ();

 #ifdef ENABLE_TRANSPARENCY
     if (option (Opt_transparent))

-----END OF PAGE-----

-- Response ended

-- Page fetched on Sun Jun 2 10:04:40 2024