Skip to content

Commit

Permalink
fix injector: remove mutex in UI
Browse files Browse the repository at this point in the history
  • Loading branch information
PragmaTwice committed Aug 22, 2022
1 parent b7af7da commit dea9157
Show file tree
Hide file tree
Showing 5 changed files with 6 additions and 26 deletions.
7 changes: 4 additions & 3 deletions src/injector/injector_gui.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -58,8 +58,9 @@ struct injectee_session_ui : injectee_session {
stream << " via " << *v;
stream << "\n";

view_.post(
[this, str = stream.str()] { log_.set_text(log_.get_text() + str); });
view_.post([&log = log_, str = stream.str()] {
log.set_text(log.get_text() + str);
});
view_.refresh();

co_return;
Expand All @@ -83,7 +84,7 @@ struct injectee_session_ui : injectee_session {

void refresh() {
std::sort(vec_.begin(), vec_.end());
list_.resize(vec_.size());
view_.post([&list = list_, &vec = vec_] { list.resize(vec.size()); });
view_.refresh();
}
};
Expand Down
8 changes: 0 additions & 8 deletions src/injector/ui_elements/dynamic_list.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -25,8 +25,6 @@ namespace cycfi {
namespace elements {

view_limits dynamic_list_s::limits(basic_context const &ctx) const {
std::unique_lock lock(*_draw_mutex);

if (_composer) {
if (_update_request) {
update(ctx);
Expand All @@ -40,8 +38,6 @@ view_limits dynamic_list_s::limits(basic_context const &ctx) const {
}

void dynamic_list_s::draw(context const &ctx) {
std::unique_lock lock(*_draw_mutex);

// Johann Philippe : this seems to be necessary for context where a
// hdynamic_list is inside vdynamic_list (2D tables)
if (_update_request)
Expand Down Expand Up @@ -101,8 +97,6 @@ void dynamic_list_s::draw(context const &ctx) {
}

void dynamic_list_s::layout(context const &ctx) {
std::unique_lock lock(*_draw_mutex);

if (_previous_size.x != ctx.bounds.width() ||
_previous_size.y != ctx.bounds.height()) {
_previous_size.x = ctx.bounds.width();
Expand All @@ -112,8 +106,6 @@ void dynamic_list_s::layout(context const &ctx) {
}

void dynamic_list_s::update() {
std::unique_lock lock(*_draw_mutex);

_update_request = true;
_cells.clear();
_main_axis_full_size = 0;
Expand Down
5 changes: 1 addition & 4 deletions src/injector/ui_elements/dynamic_list.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -32,8 +32,7 @@ class dynamic_list_s : public element {
public:
using composer_ptr = std::shared_ptr<cell_composer>;

dynamic_list_s(composer_ptr composer)
: _composer(composer), _draw_mutex(std::make_unique<std::mutex>()) {}
dynamic_list_s(composer_ptr composer) : _composer(composer) {}

virtual view_limits limits(basic_context const &ctx) const override;
void draw(context const &ctx) override;
Expand Down Expand Up @@ -106,8 +105,6 @@ class dynamic_list_s : public element {
int _click_tracking = -1;
int _cursor_tracking = -1;
std::set<int> _cursor_hovering;

std::unique_ptr<std::mutex> _draw_mutex;
};

} // namespace elements
Expand Down
10 changes: 1 addition & 9 deletions src/injector/ui_elements/text_box.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -29,27 +29,21 @@ selectable_text_box::selectable_text_box(std::string text, font font_,
float size)
: static_text_box(std::move(text), font_, size), _select_start(-1),
_select_end(-1), _current_x(0), _is_focus(false), _show_caret(true),
_caret_started(false), _draw_mutex(new std::mutex{}) {}
_caret_started(false) {}

selectable_text_box::~selectable_text_box() {}

void selectable_text_box::draw(context const &ctx) {
std::unique_lock lock(*_draw_mutex);

draw_selection(ctx);
static_text_box::draw(ctx);
draw_caret(ctx);
}

view_limits selectable_text_box::limits(basic_context const &ctx) const {
std::unique_lock lock(*_draw_mutex);

return static_text_box::limits(ctx);
}

void selectable_text_box::layout(context const &ctx) {
std::unique_lock lock(*_draw_mutex);

static_text_box::layout(ctx);
}

Expand Down Expand Up @@ -179,8 +173,6 @@ bool selectable_text_box::text(context const &ctx, text_info info_) {
}

void selectable_text_box::set_text(string_view text_) {
std::unique_lock lock(*_draw_mutex);

static_text_box::set_text(text_);
_select_start = std::min<int>(_select_start, text_.size());
_select_end = std::min<int>(_select_end, text_.size());
Expand Down
2 changes: 0 additions & 2 deletions src/injector/ui_elements/text_box.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -93,8 +93,6 @@ struct selectable_text_box : static_text_box {
bool _is_focus : 1;
bool _show_caret : 1;
bool _caret_started : 1;

std::unique_ptr<std::mutex> _draw_mutex;
};

} // namespace cycfi::elements
Expand Down

0 comments on commit dea9157

Please sign in to comment.