Add a display parameter to HWComposer where needed

- also replace C casts with C++ casts
- only the interface is changed, HWComposer still doesn't
  fully handle multiple displays

Change-Id: I48eb89bff2edb76bf1d4d41f46802b9b2a7166a8
diff --git a/services/surfaceflinger/DisplayHardware/HWComposer.h b/services/surfaceflinger/DisplayHardware/HWComposer.h
index 112e120..52171f3 100644
--- a/services/surfaceflinger/DisplayHardware/HWComposer.h
+++ b/services/surfaceflinger/DisplayHardware/HWComposer.h
@@ -56,6 +56,12 @@
         virtual ~EventHandler() {}
     };
 
+    enum {
+        MAIN = 0,
+        HDMI = 1,
+        MAX_DISPLAYS
+    };
+
     HWComposer(const sp<SurfaceFlinger>& flinger, EventHandler& handler);
     ~HWComposer();
 
@@ -77,14 +83,11 @@
     status_t acquire() const;
 
     // create a work list for numLayers layer. sets HWC_GEOMETRY_CHANGED.
-    status_t createWorkList(size_t numLayers);
-
-    // get the layer array created by createWorkList()
-    size_t getNumLayers() const;
+    status_t createWorkList(int32_t id, size_t numLayers);
 
     // get number of layers of the given type as updated in prepare().
     // type is HWC_OVERLAY or HWC_FRAMEBUFFER
-    size_t getLayerCount(int type) const;
+    size_t getLayerCount(int32_t id, int type) const;
 
     // needed forward declarations
     class LayerListIterator;
@@ -175,10 +178,10 @@
     };
 
     // Returns an iterator to the beginning of the layer list
-    LayerListIterator begin();
+    LayerListIterator begin(int32_t id);
 
     // Returns an iterator to the end of the layer list
-    LayerListIterator end();
+    LayerListIterator end(int32_t id);
 
 
     // Events handling ---------------------------------------------------------
@@ -215,9 +218,9 @@
             const Vector< sp<LayerBase> >& visibleLayersSortedByZ) const;
 
 private:
-    enum { MAX_DISPLAYS = 1 };
 
-    LayerListIterator getLayerIterator(size_t index);
+    LayerListIterator getLayerIterator(int32_t id, size_t index);
+    size_t getNumLayers(int32_t id) const;
 
     struct cb_context;
 
@@ -227,6 +230,7 @@
     inline void invalidate();
     inline void vsync(int dpy, int64_t timestamp);
 
+
     sp<SurfaceFlinger>              mFlinger;
     hw_module_t const*              mModule;
     struct hwc_composer_device_1*   mHwc;
@@ -234,6 +238,7 @@
     // TODO: decide whether mLists[i>0] should be non-NULL when display i is
     //       not attached/enabled.
     struct hwc_display_contents_1*  mLists[MAX_DISPLAYS];
+
     size_t                          mCapacity;
     mutable size_t                  mNumOVLayers;
     mutable size_t                  mNumFBLayers;