shithub: pain

Download patch

ref: 0cd1f6455c02fe0c2ade3e630debb315f054b253
parent: 1527811f3015c04a1d84528d6eb7fb50575a57e2
author: jmq <jmq@jmq.sh>
date: Thu Apr 3 20:49:03 EDT 2025

checkpoint

--- a/fs.c
+++ b/fs.c
@@ -82,34 +82,14 @@
 	respond(r, e->write(r));
 }
 
-static void
-canvasreadtask(void)
-{
-	if (CanvasReadImage != nil)
-		freeimage(CanvasReadImage);
-	
-	if ((CanvasReadImage = allocimage(display, ViewImage->r, ViewImage->chan, ViewImage->repl, DTransparent)) == nil) {
-		semrelease(&CanvasReadReady, 1);
-		return;
-	}
-	
-	draw(CanvasReadImage, CanvasReadImage->r, ViewImage, nil, ZP);
-	semrelease(&CanvasReadReady, 1);
-}
-
 static char *
 canvasread(Req * r)
 {
 	uchar * b;
 	int n;
-	char hdr[11+5*12+1], cbuf[20];;
-
-	if (newtask(0, canvasreadtask) < 0)
-		return "failed to allocated canvas read task";
-	if (tsemacquire(&CanvasReadReady, 1000) < 0)
-		return "canvas read timed out";
+	char hdr[11+5*12+1], cbuf[20];
 	
-	if (CanvasReadImage == nil) {
+	if ((CanvasReadImage = namedimage(display, "pain.view")) == nil) {
 		return "no view image";
 	}
 
--- a/main.c
+++ b/main.c
@@ -151,6 +151,8 @@
 		ViewImage = allocimage(display, CanvasSize, RGBA32, 1, DEFAULTCANVASBACKGROUNDCOLOR);
 		if (ViewImage == nil)
 			sysfatal("allocimage: %r");
+		if (nameimage(ViewImage, "pain.view", 1) < 0)
+			sysfatal("failed to name view image: %r");
 		sr = 1;
 	}
 
@@ -367,7 +369,8 @@
 {
 	if (ViewImage == nil)
 		return;
-
+	
+	nameimage(ViewImage, "", 0);
 	freeimage(ViewImage);
 	ViewImage = nil;
 }
--