diff --git a/src/DrawingProgram/DrawingProgram.cpp b/src/DrawingProgram/DrawingProgram.cpp index 09d9271..57a4c39 100644 --- a/src/DrawingProgram/DrawingProgram.cpp +++ b/src/DrawingProgram/DrawingProgram.cpp @@ -54,8 +54,7 @@ DrawingProgram::DrawingProgram(World& initWorld): components.clientInsertCallback(c); }; components.clientServerFirstPosShiftCallback = [&](uint64_t firstShiftPos) { - compCache.clear_own_cached_surfaces(); - selection.clear_own_cached_surfaces(); + clear_draw_cache(); }; } @@ -171,6 +170,11 @@ std::unordered_set DrawingProgram::get_used_resources() { return toRet; } +void DrawingProgram::clear_draw_cache() { + compCache.clear_own_cached_surfaces(); + selection.clear_own_cached_surfaces(); +} + void DrawingProgram::toolbar_gui() { Toolbar& t = world.main.toolbar; CLAY({ diff --git a/src/DrawingProgram/DrawingProgram.hpp b/src/DrawingProgram/DrawingProgram.hpp index 5e19c3e..f405df0 100644 --- a/src/DrawingProgram/DrawingProgram.hpp +++ b/src/DrawingProgram/DrawingProgram.hpp @@ -53,6 +53,8 @@ class DrawingProgram { void switch_to_tool(DrawingProgramToolType newToolType); void switch_to_tool_ptr(std::unique_ptr newTool); + + void clear_draw_cache(); private: void client_erase_set(std::unordered_set erasedComponents); // The set might be modified while this is being called, so dont pass by reference diff --git a/src/World.cpp b/src/World.cpp index b0f4634..cf42740 100644 --- a/src/World.cpp +++ b/src/World.cpp @@ -175,10 +175,13 @@ void World::set_canvas_background_color(const Vector3f& newBackColor, bool sendC if(newBackColor != convert_vec3(canvasTheme.backColor)) { canvasTheme.backColor = SkColor4f{newBackColor.x(), newBackColor.y(), newBackColor.z(), 1.0f}; Vector3f newHSV = rgb_to_hsv(newBackColor); + SkColor4f oldToolFrontColor = canvasTheme.toolFrontColor; if(newHSV.z() >= 0.6f) canvasTheme.toolFrontColor = SkColor4f{0.0f, 0.0f, 0.0f, 1.0f}; else canvasTheme.toolFrontColor = SkColor4f{1.0f, 1.0f, 1.0f, 1.0f}; + if(oldToolFrontColor != canvasTheme.toolFrontColor) + drawProg.clear_draw_cache(); if(sendChangeOverNetwork) con.client_send_items_to_server(RELIABLE_COMMAND_CHANNEL, SERVER_CANVAS_COLOR, newBackColor); }