App: take local copies of some optional<> wrapped values.
authorMarcus Fritzsch <marcus_fritzsch@mentor.com>
Tue, 12 Sep 2017 09:29:34 +0000 (11:29 +0200)
committerMarcus Fritzsch <marcus_fritzsch@mentor.com>
Tue, 12 Sep 2017 09:29:34 +0000 (11:29 +0200)
Signed-off-by: Marcus Fritzsch <marcus_fritzsch@mentor.com>
src/app.cpp

index f8d216b..59b762d 100644 (file)
@@ -445,8 +445,9 @@ char const *App::activate_surface(char const *drawing_name) {
       if (state.sub == -1) {
          if (can_split) {
             if (state.main != *surface_id) {
+               std::string main = *this->lookup_name(state.main);
                this->emit_syncdraw(drawing_name);
-               this->emit_syncdraw(this->lookup_name(state.main)->c_str());
+               this->emit_syncdraw(main.c_str());
 
                this->surface_set_layout_split(state.main, *surface_id);
                this->activate(*surface_id);
@@ -454,7 +455,7 @@ char const *App::activate_surface(char const *drawing_name) {
 
                // Should wait for EndDraw event...
                this->emit_flushdraw(drawing_name);
-               this->emit_flushdraw(this->lookup_name(state.main)->c_str());
+               this->emit_flushdraw(main.c_str());
             }
          } else {
             this->emit_syncdraw(drawing_name);
@@ -505,7 +506,8 @@ char const *App::deactivate_surface(char const *drawing_name) {
 
    if (state.main == *surface_id) {
       if (state.sub != -1) {
-         this->emit_syncdraw(this->lookup_name(state.sub)->c_str());
+         std::string sub = *this->lookup_name(state.sub);
+         this->emit_syncdraw(sub.c_str());
 
          this->deactivate(*surface_id);
          this->surface_set_layout_full(state.sub);
@@ -513,13 +515,14 @@ char const *App::deactivate_surface(char const *drawing_name) {
          state.sub = -1;
          state.s = LayoutState::Single;
 
-         this->emit_flushdraw(this->lookup_name(state.sub)->c_str());
+         this->emit_flushdraw(sub.c_str());
       } else {
          this->deactivate(*surface_id);
          state.main = -1;
       }
    }else if (state.sub == *surface_id) {
-      this->emit_syncdraw(this->lookup_name(state.main)->c_str());
+      std::string main = *this->lookup_name(state.main);
+      this->emit_syncdraw(main.c_str());
 
       this->deactivate(*surface_id);
       this->deactivate(*surface_id);
@@ -527,7 +530,7 @@ char const *App::deactivate_surface(char const *drawing_name) {
       state.sub = -1;
       state.s = LayoutState::Single;
 
-      this->emit_flushdraw(this->lookup_name(state.main)->c_str());
+      this->emit_flushdraw(main.c_str());
    } else {
       return "Surface is not active";
    }