better documentation for (*setUpdateRect)()
diff --git a/include/hardware/gralloc.h b/include/hardware/gralloc.h
index dba6fda..d88591f 100644
--- a/include/hardware/gralloc.h
+++ b/include/hardware/gralloc.h
@@ -244,8 +244,22 @@
int interval);
/*
- * sets a rectangle evaluated during (*post)() specifying which area
- * of the buffer passed in (*post)() needs to be posted.
+ * This hook is OPTIONAL.
+ *
+ * It is non NULL If the framebuffer driver supports "update-on-demand"
+ * and the given rectangle is the area of the screen that gets
+ * updated during (*post)().
+ *
+ * This is useful on devices that are able to DMA only a portion of
+ * the screen to the display panel, upon demand -- as opposed to
+ * constantly refreshing the panel 60 times per second, for instance.
+ *
+ * Only the area defined by this rectangle is guranteed to be valid, that
+ * is, the driver is not allowed to post anything outside of this
+ * rectangle.
+ *
+ * The rectangle evaluated during (*post)() and specifies which area
+ * of the buffer passed in (*post)() shall to be posted.
*
* return -EINVAL if width or height <=0, or if left or top < 0
*/
diff --git a/modules/gralloc/framebuffer.cpp b/modules/gralloc/framebuffer.cpp
index 5077a0d..d885ae8 100644
--- a/modules/gralloc/framebuffer.cpp
+++ b/modules/gralloc/framebuffer.cpp
@@ -38,6 +38,9 @@
/*****************************************************************************/
+// should be a build option
+#define SUPPORTS_UPDATE_ON_DEMAND 1
+
#define NUM_BUFFERS 2
@@ -340,7 +343,9 @@
dev->device.common.module = const_cast<hw_module_t*>(module);
dev->device.common.close = fb_close;
dev->device.setSwapInterval = fb_setSwapInterval;
+#if SUPPORTS_UPDATE_ON_DEMAND
dev->device.setUpdateRect = fb_setUpdateRect;
+#endif
dev->device.post = fb_post;
private_module_t* m = (private_module_t*)module;