aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMarcus Fritzsch <marcus_fritzsch@mentor.com>2017-09-12 11:29:34 +0200
committerMarcus Fritzsch <marcus_fritzsch@mentor.com>2017-09-12 11:29:34 +0200
commit65542e2498c33d534a9ab8037c3e0f1b263a6077 (patch)
treeec6afc3cc38e0c29fe093728c625f84c041ab40c
parent6bb5acd014a60508e142725fa6f8b9b6a1e4543c (diff)
App: take local copies of some optional<> wrapped values.
Signed-off-by: Marcus Fritzsch <marcus_fritzsch@mentor.com>
-rw-r--r--src/app.cpp15
1 files changed, 9 insertions, 6 deletions
diff --git a/src/app.cpp b/src/app.cpp
index f8d216b..59b762d 100644
--- a/src/app.cpp
+++ b/src/app.cpp
@@ -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";
}