Commit Diff


commit - 168518a993a67436d00c40f4f9cea68a296a2034
commit + 670dd11a8a0c97345919b28502c950d3a3ef776c
blob - 3f7d50632ebfd58ab541313cc05ca79169c0d80d
blob + 3fa76854a23c731851e5add42a04e8a0deed1cf8
--- src/libdraw/devdraw.c
+++ src/libdraw/devdraw.c
@@ -149,6 +149,7 @@ _initdisplaymemimage(Display *d, Memimage *m)
 	client0->op = SoverD;
 	sdraw.client[0] = client0;
 	sdraw.nclient = 1;
+	sdraw.softscreen = 1;
 }
 
 void
blob - f0ee94fb7c12c4549398930aca77f13501b2aa01
blob + 46815c9ed2f887136b038ef602f4734b779cde8a
--- src/libdraw/init.c
+++ src/libdraw/init.c
@@ -35,8 +35,7 @@ initdraw(void (*error)(Display*, char*), char *fontnam
 		return -1;
 
 	lockdisplay(display);
-	display->image = display->screenimage;
-	screen = display->screenimage;
+	display->screenimage = display->image;
 
 	/*
 	 * Set up default font
@@ -83,6 +82,13 @@ initdraw(void (*error)(Display*, char*), char *fontnam
 	}
 	display->opaque = display->white;
 	display->transparent = display->black;
+
+	_screen = allocscreen(display->image, display->white, 0);
+	screen = _allocwindow(nil, _screen, display->image->r, Refnone, DWhite);
+	display->screenimage = screen;
+	draw(screen, screen->r, display->black, nil, ZP);
+	flushimage(display, 1);
+
 	atexit(drawshutdown);
 	return 1;
 }
blob - 14c96a66abfb672e72d3701e0420af24b7e85440
blob + b2b3ca73e95d9e0c02ecb8a513e3d502b34902fa
--- src/libdraw/x11-init.c
+++ src/libdraw/x11-init.c
@@ -70,7 +70,8 @@ _initdisplay(void (*error)(Display*, char*), char *lab
 
 	d->error = error;
 	_initdisplaymemimage(d, m);
-	d->screenimage = getimage0(d, 0);
+	d->image = getimage0(d, 0);
+	
 	return d;
 }
 
@@ -146,10 +147,15 @@ getwindow(Display *d, int ref)
 	 * so we have to reuse the image structure
 	 * memory we already have.
 	 */
-	oi = d->screenimage;
+	oi = d->image;
 	i = getimage0(d, oi);
-	screen = d->screenimage = d->image = i;
+	d->image = i;
 	// fprint(2, "getwindow %p -> %p\n", oi, i);
+
+	_screen = allocscreen(i, d->white, 0);
+	_freeimage1(screen);
+	screen = _allocwindow(screen, _screen, i->r, ref, DWhite);
+	d->screenimage = screen;
 	return 0;
 }