Fixed sigsev caused by modifying UI from outside the UI thread.
WIP on jogging layout.
This commit is contained in:
@@ -167,6 +167,34 @@ public:
|
||||
cnc.go_to_zero(true, true, true);
|
||||
});
|
||||
|
||||
// jogging
|
||||
layer->add<Label>("Jogging", "sans-bold", 20);
|
||||
auto holder = new Widget(layer);
|
||||
|
||||
holder->set_layout(new GridLayout(Orientation::Horizontal, 2, Alignment::Middle, 0, 0));
|
||||
|
||||
auto jogBtnsHolder = holder->add<Widget>();
|
||||
jogBtnsHolder->set_layout(new GridLayout(Orientation::Horizontal, 3, Alignment::Middle, 0, 6));
|
||||
|
||||
jogBtnsHolder->add<Label>("");
|
||||
jogBtnsHolder->add<ToolButton>(FA_ARROW_ALT_CIRCLE_UP);
|
||||
jogBtnsHolder->add<Label>("");
|
||||
|
||||
jogBtnsHolder->add<ToolButton>(FA_ARROW_ALT_CIRCLE_LEFT);
|
||||
jogBtnsHolder->add<ToolButton>(FA_HOME);
|
||||
jogBtnsHolder->add<ToolButton>(FA_ARROW_ALT_CIRCLE_RIGHT);
|
||||
|
||||
jogBtnsHolder->add<Label>("");
|
||||
jogBtnsHolder->add<ToolButton>(FA_ARROW_ALT_CIRCLE_DOWN);
|
||||
jogBtnsHolder->add<Label>("");
|
||||
|
||||
auto jogZBtnsHolder = holder->add<Widget>();
|
||||
jogZBtnsHolder->set_layout(new BoxLayout(Orientation::Vertical, Alignment::Minimum, 0, 6));
|
||||
|
||||
jogZBtnsHolder->add<ToolButton>(FA_ANGLE_UP);
|
||||
jogZBtnsHolder->add<ToolButton>(FA_HOME);
|
||||
jogZBtnsHolder->add<ToolButton>(FA_ANGLE_DOWN);
|
||||
|
||||
// work parameters
|
||||
layer->add<Label>("Work parameters", "sans-bold", 20);
|
||||
auto x = new Widget(layer);
|
||||
@@ -359,11 +387,11 @@ public:
|
||||
|
||||
grbl::realtime_status_report last_report;
|
||||
|
||||
volatile bool machine_initialized = false;
|
||||
|
||||
void on_init_completed() override {
|
||||
fill_in_settings();
|
||||
fill_in_parameters();
|
||||
refresh_offset();
|
||||
update_dro();
|
||||
machine_initialized = true;
|
||||
// need to do UI related things in UI thread
|
||||
}
|
||||
|
||||
void on_realtime_status_report(grbl::realtime_status_report report) override {
|
||||
@@ -555,6 +583,20 @@ public:
|
||||
}
|
||||
}
|
||||
|
||||
void draw(NVGcontext *ctx) override {
|
||||
// not pretty but need to do this in UI thread
|
||||
if (machine_initialized) {
|
||||
fill_in_settings();
|
||||
fill_in_parameters();
|
||||
|
||||
refresh_offset();
|
||||
update_dro();
|
||||
machine_initialized = false;
|
||||
}
|
||||
|
||||
Widget::draw(ctx);
|
||||
}
|
||||
|
||||
virtual void draw_contents() {
|
||||
auto fb_size = framebuffer_size();
|
||||
|
||||
|
||||
Reference in New Issue
Block a user