ARM: Postpones creation of framebuffer output file until it is actually used.
authorChris Emmons <Chris.Emmons@arm.com>
Fri, 15 Feb 2013 22:40:10 +0000 (17:40 -0500)
committerChris Emmons <Chris.Emmons@arm.com>
Fri, 15 Feb 2013 22:40:10 +0000 (17:40 -0500)
This delay prevents a potential conflict with the HDLCD if both are in the same
system even if only one is enabled.

src/dev/arm/pl111.cc

index 2cf401ce4f3328cdbd332bb26ccccc49060f64ed..8460010f6364fb8aafa091de80a7711a46ad2621 100644 (file)
@@ -65,8 +65,8 @@ Pl111::Pl111(const Params *p)
       clcdCrsrCtrl(0), clcdCrsrConfig(0), clcdCrsrPalette0(0),
       clcdCrsrPalette1(0), clcdCrsrXY(0), clcdCrsrClip(0), clcdCrsrImsc(0),
       clcdCrsrIcr(0), clcdCrsrRis(0), clcdCrsrMis(0),
-      pixelClock(p->pixel_clock),
-      vnc(p->vnc), bmp(NULL), width(LcdMaxWidth), height(LcdMaxHeight),
+      pixelClock(p->pixel_clock), vnc(p->vnc), bmp(NULL), pic(NULL),
+      width(LcdMaxWidth), height(LcdMaxHeight),
       bytesPerPixel(4), startTime(0), startAddr(0), maxAddr(0), curAddr(0),
       waterMark(0), dmaPendingNum(0), readEvent(this), fillFifoEvent(this),
       dmaDoneEventAll(maxOutstandingDma, this),
@@ -75,8 +75,6 @@ Pl111::Pl111(const Params *p)
 {
     pioSize = 0xFFFF;
 
-    pic = simout.create(csprintf("%s.framebuffer.bmp", sys->name()), true);
-
     dmaBuffer = new uint8_t[buffer_size];
 
     memset(lcdPalette, 0, sizeof(lcdPalette));
@@ -503,7 +501,11 @@ Pl111::dmaDone()
 
         DPRINTF(PL111, "-- write out frame buffer into bmp\n");
 
+        if (!pic)
+            pic = simout.create(csprintf("%s.framebuffer.bmp", sys->name()), true);
+
         assert(bmp);
+        assert(pic);
         pic->seekp(0);
         bmp->write(pic);