From 9a9d018ffbd55c5886c27db727b67d8d4a2c65aa Mon Sep 17 00:00:00 2001 From: omigamedev Date: Sat, 2 Mar 2019 19:08:11 +0100 Subject: [PATCH] draw main brush preview first if the queue is long --- src/node_panel_brush.cpp | 4 ++-- src/node_panel_stroke.cpp | 2 ++ src/node_stroke_preview.cpp | 2 +- src/node_stroke_preview.h | 1 + src/util.h | 4 ++-- 5 files changed, 8 insertions(+), 5 deletions(-) diff --git a/src/node_panel_brush.cpp b/src/node_panel_brush.cpp index fe2ba2d..7dcae68 100644 --- a/src/node_panel_brush.cpp +++ b/src/node_panel_brush.cpp @@ -443,8 +443,8 @@ kEventResult NodePanelBrushPreset::handle_event(Event* e) void NodePanelBrushPreset::handle_click(Node* target) { - if (target == m_current) - return; + //if (target == m_current) + // return; if (m_current) m_current->m_selected = false; m_current = (NodeBrushPresetItem*)target; diff --git a/src/node_panel_stroke.cpp b/src/node_panel_stroke.cpp index ce5bce4..a6c7986 100644 --- a/src/node_panel_stroke.cpp +++ b/src/node_panel_stroke.cpp @@ -428,6 +428,8 @@ void NodePanelStroke::init_controls() m_preview = find("canvas"); + m_preview->m_draw_first = true; + m_blend_mode = find("blend-mode"); m_blend_mode->on_select = [this](Node*, int index) { Canvas::I->m_current_brush->m_blend_mode = index; diff --git a/src/node_stroke_preview.cpp b/src/node_stroke_preview.cpp index 7cf39ea..7479a2c 100644 --- a/src/node_stroke_preview.cpp +++ b/src/node_stroke_preview.cpp @@ -509,7 +509,7 @@ void NodeStrokePreview::draw_stroke() }); } s_queue.mutex.unlock(); - s_queue.PostUnique(this); + s_queue.PostUnique(this, m_draw_first); } void NodeStrokePreview::draw() diff --git a/src/node_stroke_preview.h b/src/node_stroke_preview.h index bfacaf9..b947907 100644 --- a/src/node_stroke_preview.h +++ b/src/node_stroke_preview.h @@ -32,6 +32,7 @@ public: static void terminate_renderer(); std::shared_ptr m_brush; std::shared_ptr m_dual_brush; + bool m_draw_first = false; Stroke m_stroke; Stroke m_dual_stroke; std::vector m_bez_points; diff --git a/src/util.h b/src/util.h index 9945ab7..82c60b4 100644 --- a/src/util.h +++ b/src/util.h @@ -173,7 +173,7 @@ public: q.push_back(pkt); get_cv.notify_one(); } - void PostUnique(T pkt) + void PostUnique(T pkt, bool top) { std::unique_lock lock(mutex); if (Max > 0) @@ -182,7 +182,7 @@ public: if (q.size() >= Max) return; } if (std::find(q.begin(), q.end(), pkt) == q.end()); - q.push_back(pkt); + top ? q.push_front(pkt) : q.push_back(pkt); get_cv.notify_one(); } T Get()