OSDN Git Service

drm_hwcomposer: drmeventlistener: Set nl_pid to 0
[android-x86/external-drm_hwcomposer.git] / drmdisplaycomposition.cpp
index 949f4a3..66e67a4 100644 (file)
@@ -17,6 +17,7 @@
 #define LOG_TAG "hwc-drm-display-composition"
 
 #include "drmdisplaycomposition.h"
+#include "drmdisplaycompositor.h"
 #include "drmcrtc.h"
 #include "drmplane.h"
 #include "drmresources.h"
@@ -258,8 +259,10 @@ int DrmDisplayComposition::CreateAndAssignReleaseFences() {
     if (!layer->release_fence)
       continue;
     int ret = layer->release_fence.Set(CreateNextTimelineFence());
-    if (ret < 0)
+    if (ret < 0) {
+      ALOGE("Failed to set the release fence (squash) %d", ret);
       return ret;
+    }
   }
   timeline_squash_done_ = timeline_;
 
@@ -276,8 +279,10 @@ int DrmDisplayComposition::CreateAndAssignReleaseFences() {
     if (!layer->release_fence)
       continue;
     int ret = layer->release_fence.Set(CreateNextTimelineFence());
-    if (ret < 0)
+    if (ret < 0) {
+      ALOGE("Failed to set the release fence (comp) %d", ret);
       return ret;
+    }
   }
 
   return 0;
@@ -375,6 +380,9 @@ int DrmDisplayComposition::Plan(SquashState *squash,
     if (!i.plane())
       continue;
 
+    // make sure that source layers are ordered based on zorder
+    std::sort(i.source_layers().begin(), i.source_layers().end());
+
     std::vector<DrmPlane *> *container;
     if (i.plane()->type() == DRM_PLANE_TYPE_PRIMARY)
       container = primary_planes;