Bug fix: Refer removed surface id in vector of pending_end_draw
[apps/agl-service-windowmanager.git] / src / app.cpp
index dca0e74..23d3a2c 100644 (file)
@@ -567,10 +567,12 @@ void App::api_enddraw(char const *appid, char const *drawing_name) {
 
    for (unsigned i = 0, iend = this->pending_end_draw.size(); i < iend; i++) {
       auto n = this->lookup_name(this->pending_end_draw[i]);
+      int surface_id = this->pending_end_draw[i];
+
       if (n && *n == role) {
          std::swap(this->pending_end_draw[i], this->pending_end_draw[iend - 1]);
          this->pending_end_draw.resize(iend - 1);
-         this->activate(this->pending_end_draw[i]);
+         this->activate(surface_id);
          this->emit_flushdraw(drawing_name);
          this->emitScreenUpdated(appid);
       }
@@ -1188,13 +1190,13 @@ void App::setSurfaceSize(const char* role, const char* area) {
     HMI_DEBUG("wm", "Surface rect { %d, %d, %d, %d }",
               size.x, size.y, size.w, size.h);
 
+    // Enqueue flushDraw event
+    this->enqueue_flushdraw(surface_id);
+
     // Emit syncDraw event
     const char* drawing_name = this->role2drawingname_[role].c_str();
     this->emit_syncdraw(drawing_name, area,
                         size.x, size.y, size.w, size.h);
-
-    // Enqueue flushDraw event
-    this->enqueue_flushdraw(surface_id);
 }
 
 void App::setAccelPedalPos(double val) {