mirror of
https://github.com/SoftFever/OrcaSlicer.git
synced 2025-07-11 16:57:53 -06:00
fix windows widgets while playback
This commit is contained in:
parent
083b557ec2
commit
3a185d7f57
1 changed files with 23 additions and 16 deletions
|
@ -109,6 +109,13 @@ public:
|
|||
m_display->set_screen_size(ClientSize.x, ClientSize.y);
|
||||
m_display->repaint();
|
||||
});
|
||||
|
||||
Bind(wxEVT_SIZE, [this](wxSizeEvent &) {
|
||||
const wxSize ClientSize = GetClientSize();
|
||||
|
||||
m_display->set_screen_size(ClientSize.x, ClientSize.y);
|
||||
m_display->repaint();
|
||||
});
|
||||
}
|
||||
|
||||
shptr<Slic3r::GL::Display> get_display() const { return m_display; }
|
||||
|
@ -200,7 +207,7 @@ public:
|
|||
case MV: MouseInput::move_to(evt.a, evt.b); break;
|
||||
}
|
||||
|
||||
wxYield();
|
||||
wxTheApp->Yield();
|
||||
if (!m_playing)
|
||||
break;
|
||||
}
|
||||
|
@ -299,9 +306,9 @@ public:
|
|||
std::string model_name;
|
||||
std::getline(stream, model_name);
|
||||
load_model(model_name);
|
||||
while (!m_ui_job->is_finalized()) {
|
||||
wxYield();
|
||||
}
|
||||
|
||||
while (!m_ui_job->is_finalized())
|
||||
wxTheApp->Yield();;
|
||||
|
||||
int w, h;
|
||||
stream >> w >> h;
|
||||
|
@ -336,6 +343,7 @@ inline long get_idx(const wxString &a, const std::vector<wxString> &v)
|
|||
|
||||
class App : public wxApp {
|
||||
MyFrame *m_frame = nullptr;
|
||||
wxString m_fname;
|
||||
public:
|
||||
bool OnInit() override {
|
||||
|
||||
|
@ -350,23 +358,23 @@ public:
|
|||
|
||||
parser.Parse();
|
||||
|
||||
wxString fname;
|
||||
bool is_play = parser.Found("play", &fname);
|
||||
bool is_play = parser.Found("play", &m_fname);
|
||||
|
||||
m_frame = new MyFrame("PrusaSlicer OpenCSG Demo", wxDefaultPosition, wxSize(1024, 768), parser);
|
||||
|
||||
if (is_play) {
|
||||
Bind(wxEVT_IDLE, &App::Play, this);
|
||||
m_frame->Show( true );
|
||||
m_frame->play_back_mouse(fname.ToStdString());
|
||||
|
||||
std::cout << m_frame->get_fps_average() << std::endl;
|
||||
|
||||
m_frame->Destroy();
|
||||
|
||||
} else m_frame->Show( true );
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
void Play(wxIdleEvent &) {
|
||||
Unbind(wxEVT_IDLE, &App::Play, this);
|
||||
m_frame->play_back_mouse(m_fname.ToStdString());
|
||||
m_frame->Destroy();
|
||||
}
|
||||
};
|
||||
|
||||
wxIMPLEMENT_APP(App);
|
||||
|
@ -438,7 +446,8 @@ void MyFrame::set_renderer_algorithm(const wxString &alg)
|
|||
canvas()->set_display(m_ocsgdisplay);
|
||||
}
|
||||
|
||||
if (cam) m_canvas->get_display()->set_camera(cam);
|
||||
if (cam)
|
||||
m_canvas->get_display()->set_camera(cam);
|
||||
|
||||
m_ctl->remove_displays();
|
||||
m_ctl->add_display(m_canvas->get_display());
|
||||
|
@ -461,9 +470,7 @@ void MyFrame::activate_canvas_display()
|
|||
|
||||
// Do the repaint continuously
|
||||
m_canvas->Bind(wxEVT_IDLE, [this](wxIdleEvent &evt) {
|
||||
if (IsShown() && m_canvas->IsShown())
|
||||
m_canvas->get_display()->repaint();
|
||||
|
||||
m_canvas->get_display()->repaint();
|
||||
evt.RequestMore();
|
||||
});
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue