fix picker which crashed on resolution change, timelapse frame only when draw a stroke
This commit is contained in:
@@ -302,7 +302,7 @@ void App::update(float dt)
|
||||
//glViewport(0, 0, (GLsizei)width, (GLsizei)height);
|
||||
//glClear(GL_COLOR_BUFFER_BIT);
|
||||
|
||||
if (!canvas->m_mouse_captured)
|
||||
//if (!canvas->m_mouse_captured)
|
||||
{
|
||||
#if _WIN32 || __OSX__
|
||||
layout.reload();
|
||||
@@ -349,8 +349,10 @@ void App::update(float dt)
|
||||
if (rec_running)
|
||||
{
|
||||
rec_timer += dt;
|
||||
if (rec_timer > 1.f)
|
||||
if (rec_timer > 1.f && canvas->m_canvas->m_dirty_stroke)
|
||||
{
|
||||
canvas->m_canvas->m_dirty_stroke = false;
|
||||
|
||||
LOG("rec tick");
|
||||
rec_timer = 0.f;
|
||||
|
||||
@@ -682,6 +684,7 @@ void App::rec_loop()
|
||||
else
|
||||
{
|
||||
rec_count++;
|
||||
redraw = true;
|
||||
}
|
||||
}
|
||||
rec_frames.pop_front();
|
||||
|
||||
@@ -126,6 +126,11 @@ glm::vec4 ui::Canvas::pick_get(glm::vec2 canvas_loc)
|
||||
}
|
||||
return {0,0,0,1};
|
||||
}
|
||||
void ui::Canvas::pick_end()
|
||||
{
|
||||
for (int i = 0; i < 6; i++)
|
||||
m_pick_data[i].release();
|
||||
}
|
||||
void ui::Canvas::clear(const glm::vec4& c/*={0,0,0,1}*/)
|
||||
{
|
||||
snap_history({ 0, 1, 2, 3, 4, 5 });
|
||||
@@ -458,6 +463,8 @@ void ui::Canvas::stroke_commit()
|
||||
if (!m_dirty || m_layers.empty())
|
||||
return;
|
||||
m_dirty = false;
|
||||
m_dirty_stroke = true; // new stroke ready for timelapse capture
|
||||
App::I.redraw = true;
|
||||
|
||||
// save viewport and clear color states
|
||||
GLint vp[4];
|
||||
|
||||
@@ -50,6 +50,7 @@ public:
|
||||
BrushMesh m_mesh;
|
||||
bool m_dirty = false;
|
||||
bool m_commit_delayed = false;
|
||||
bool m_dirty_stroke = false;
|
||||
|
||||
static Canvas* I;
|
||||
bool m_alpha_lock = false;
|
||||
@@ -129,6 +130,7 @@ public:
|
||||
void pick_start();
|
||||
void pick_update(int plane);
|
||||
glm::vec4 pick_get(glm::vec2 canvas_loc);
|
||||
void pick_end();
|
||||
void snapshot_save(std::string data_path);
|
||||
void snapshot_restore();
|
||||
void snap_history(const std::vector<int>& planes);
|
||||
|
||||
@@ -99,6 +99,7 @@ void CanvasModePen::on_MouseEvent(MouseEvent* me, glm::vec2& loc)
|
||||
glm::vec4 pix = canvas->pick_get(loc);
|
||||
canvas->m_current_brush.m_tip_color = pix;
|
||||
App::I.color->set_color(pix);
|
||||
canvas->pick_end();
|
||||
}
|
||||
m_dragging = false;
|
||||
m_picking = false;
|
||||
|
||||
Reference in New Issue
Block a user