be less of a hobo maybe
authorSyed S. Albiz <ssalbiz@uwaterloo.ca>
Thu, 28 Jun 2012 00:05:06 +0000 (20:05 -0400)
committerSyed S. Albiz <ssalbiz@uwaterloo.ca>
Thu, 28 Jun 2012 00:06:17 +0000 (20:06 -0400)
shit.c

diff --git a/shit.c b/shit.c
index 5ed2967..fdf0330 100644 (file)
--- a/shit.c
+++ b/shit.c
@@ -80,12 +80,21 @@ int main(int argc, char** argv)
     uint8_t channels = png_get_channels(png_ptr, info_ptr);
 
     printf("png # of channels: %d\n", channels);
+    printf("png interlace: %s\n", info_ptr->interlace_type ? "YES" :  "NO");
+    printf("screen x-yoffset: %d %d\n", vinfo.xoffset, vinfo.yoffset);
 
     // dump this shit to a framebuffer nigga
     assert(vinfo.bits_per_pixel == 32);
+    if (info_ptr->interlace_type) {
+      perror("INTERLACING!? FUCK OFF AND DIE");
+      munmap(fbp, screensize);
+      close(fbfd);
+      fclose(fp);
+    }
+
     for (int y = 0; y < MIN(info_ptr->height, vinfo.yres-2); ++y) {
       for (int x = 0; x < MIN(info_ptr->width, channels*vinfo.xres); ++x) {
-        assert(x*y*3 < channels*screensize);
+        assert(x*y*channels < channels*screensize);
         location = (x+vinfo.xoffset) * (vinfo.bits_per_pixel/8) +
                     (y+vinfo.yoffset) * finfo.line_length;
 
@@ -101,6 +110,7 @@ int main(int argc, char** argv)
         *(fbp + location + 3) = 0;      // No transparency
       }
     }
+    vinfo.activate |= FB_ACTIVATE_NOW | FB_ACTIVATE_FORCE;
     munmap(fbp, screensize);
     close(fbfd);
     fclose(fp);