save and restore layers image when context is lost in Android

This commit is contained in:
2017-04-29 21:30:40 +01:00
parent 2e47ccb0c6
commit fa49d9ee09
17 changed files with 210 additions and 69 deletions

View File

@@ -298,6 +298,7 @@ void App::initLayout()
sidebar = layout[main_id]->find<NodeBorder>("sidebar");
panels = layout[main_id]->find<Node>("panels");
canvas = layout[main_id]->find<NodeCanvas>("paint-canvas");
canvas->data_path = data_path;
//brushes = layout[main_id]->find<NodePanelBrush>("panel-brush");
//layers = layout[main_id]->find<NodePanelLayer>("panel-layer");
@@ -413,6 +414,7 @@ void App::initLayout()
//exit(0);
if (canvas)
{
canvas->m_canvas->snapshot_save(data_path);
canvas->m_canvas->m_use_instanced = !canvas->m_canvas->m_use_instanced;
//button->color_normal = canvas->m_canvas->m_use_instanced ? glm::vec4(1, 0, 0, 1) : glm::vec4(0, 1, 0, 1);
button->m_text->set_text(canvas->m_canvas->m_use_instanced ? "INST" : "NORM");
@@ -500,7 +502,14 @@ void App::initLayout()
};
LOG("initializing layout xml");
if (layout.m_loaded)
layout[main_id]->restore_context();
{
LOG("restore layout");
layout.restore_context();
if (panels->get_child_index(brushes.get()) == -1) brushes->restore_context();
if (panels->get_child_index(layers.get()) == -1) layers->restore_context();
if (panels->get_child_index(color.get()) == -1) color->restore_context();
if (panels->get_child_index(stroke.get()) == -1) stroke->restore_context();
}
else
layout.load("data/layout.xml");
LOG("initializing layout completed");
@@ -722,5 +731,12 @@ bool App::key_char(char key)
void App::terminate()
{
LOG("App::terminate");
TextureManager::invalidate();
ShaderManager::invalidate();
layout.clear_context();
brushes->clear_context();
layers->clear_context();
color->clear_context();
stroke->clear_context();
}