display: Enable triple framebuffers

Change-Id: I323c10b939277477f724c2d0a20f9c6da4899481
diff --git a/libgralloc/Android.mk b/libgralloc/Android.mk
index 44108c7..b9eb9e4 100644
--- a/libgralloc/Android.mk
+++ b/libgralloc/Android.mk
@@ -26,7 +26,8 @@
 LOCAL_MODULE           := gralloc.$(TARGET_BOARD_PLATFORM)
 LOCAL_MODULE_TAGS      := optional
 LOCAL_CFLAGS           := -DLOG_TAG=\"$(TARGET_BOARD_PLATFORM).gralloc\" \
-                          -DDEBUG_CALC_FPS
+                          -DDEBUG_CALC_FPS \
+                          -Wno-missing-field-initializers
 LOCAL_SRC_FILES :=  gpu.cpp gralloc.cpp framebuffer.cpp mapper.cpp
 
 ifeq ($(TARGET_USES_POST_PROCESSING),true)
diff --git a/libgralloc/fb_priv.h b/libgralloc/fb_priv.h
index 677d1c1..46b119f 100644
--- a/libgralloc/fb_priv.h
+++ b/libgralloc/fb_priv.h
@@ -20,8 +20,7 @@
 #include <linux/fb.h>
 
 #define NUM_FRAMEBUFFERS_MIN  2
-//XXX: Enable triple framebuffers
-#define NUM_FRAMEBUFFERS_MAX  2
+#define NUM_FRAMEBUFFERS_MAX  3
 
 #define NO_SURFACEFLINGER_SWAPINTERVAL
 #define COLOR_FORMAT(x) (x & 0xFFF) // Max range for colorFormats is 0 - FFF
diff --git a/libgralloc/framebuffer.cpp b/libgralloc/framebuffer.cpp
index 931024b..bd9ca9c 100644
--- a/libgralloc/framebuffer.cpp
+++ b/libgralloc/framebuffer.cpp
@@ -582,9 +582,10 @@
     struct qbuf_t qb;
     fb_context_t* ctx = (fb_context_t*)dev;
 
-    private_handle_t const* hnd = reinterpret_cast<private_handle_t const*>(buffer);
-    private_module_t* m = reinterpret_cast<private_module_t*>(
-        dev->common.module);
+    private_handle_t const* hnd =
+        reinterpret_cast<private_handle_t const*>(buffer);
+    private_module_t* m =
+        reinterpret_cast<private_module_t*>(dev->common.module);
 
     if (hnd->flags & private_handle_t::PRIV_FLAGS_FRAMEBUFFER) {
 
@@ -1001,6 +1002,7 @@
             const_cast<float&>(dev->device.fps) = m->fps;
             const_cast<int&>(dev->device.minSwapInterval) = PRIV_MIN_SWAP_INTERVAL;
             const_cast<int&>(dev->device.maxSwapInterval) = PRIV_MAX_SWAP_INTERVAL;
+            const_cast<int&>(dev->device.numFramebuffers) = m->numBuffers;
             if (m->finfo.reserved[0] == 0x5444 &&
                 m->finfo.reserved[1] == 0x5055) {
                 dev->device.setUpdateRect = fb_setUpdateRect;