If there is no hwc, call eglSwapBuffers for the main display

Bug: 7068568
Change-Id: I6a0309613fe3619d065b9047af6c3fb32b510d97
diff --git a/services/surfaceflinger/SurfaceFlinger.cpp b/services/surfaceflinger/SurfaceFlinger.cpp
index cd1b336..7124b0c 100644
--- a/services/surfaceflinger/SurfaceFlinger.cpp
+++ b/services/surfaceflinger/SurfaceFlinger.cpp
@@ -1255,8 +1255,9 @@
     // FIXME: we need to call eglSwapBuffers() on displays that have
     // GL composition and only on those.
     // however, currently hwc.commit() already does that for the main
-    // display and never for the other ones
-    if (hw->getDisplayType() >= DisplayDevice::DISPLAY_VIRTUAL) {
+    // display (if there is a hwc) and never for the other ones
+    if (hw->getDisplayType() >= DisplayDevice::DISPLAY_VIRTUAL ||
+            getHwComposer().initCheck() != NO_ERROR) {
         // FIXME: EGL spec says:
         //   "surface must be bound to the calling thread's current context,
         //    for the current rendering API."