Skip to content
This repository was archived by the owner on Feb 25, 2025. It is now read-only.

Commit 26daf11

Browse files
authored
Fix high CPU consumption (#24944)
1 parent d043266 commit 26daf11

File tree

1 file changed

+11
-18
lines changed

1 file changed

+11
-18
lines changed

shell/platform/linux/fl_view.cc

Lines changed: 11 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -407,13 +407,13 @@ static void fl_view_size_allocate(GtkWidget* widget,
407407
fl_view_geometry_changed(self);
408408
}
409409

410-
struct _DrawData {
410+
struct _ReorderData {
411411
GdkWindow* parent_window;
412412
GdkWindow* last_window;
413413
};
414414

415-
static void fl_view_draw_forall(GtkWidget* widget, gpointer user_data) {
416-
_DrawData* data = reinterpret_cast<_DrawData*>(user_data);
415+
static void fl_view_reorder_forall(GtkWidget* widget, gpointer user_data) {
416+
_ReorderData* data = reinterpret_cast<_ReorderData*>(user_data);
417417
GdkWindow* window = gtk_widget_get_window(widget);
418418
if (window && window != data->parent_window) {
419419
if (data->last_window) {
@@ -423,20 +423,6 @@ static void fl_view_draw_forall(GtkWidget* widget, gpointer user_data) {
423423
}
424424
}
425425

426-
// Implements GtkWidget::draw.
427-
static gboolean fl_view_draw(GtkWidget* widget, cairo_t* cr) {
428-
FlView* self = FL_VIEW(widget);
429-
430-
struct _DrawData data = {
431-
.parent_window = gtk_widget_get_window(GTK_WIDGET(self)),
432-
.last_window = nullptr,
433-
};
434-
435-
gtk_container_forall(GTK_CONTAINER(self), fl_view_draw_forall, &data);
436-
437-
return GTK_WIDGET_CLASS(fl_view_parent_class)->draw(widget, cr);
438-
}
439-
440426
static gboolean event_box_button_press_event(GtkWidget* widget,
441427
GdkEventButton* event,
442428
FlView* view) {
@@ -613,7 +599,6 @@ static void fl_view_class_init(FlViewClass* klass) {
613599
widget_class->get_preferred_width = fl_view_get_preferred_width;
614600
widget_class->get_preferred_height = fl_view_get_preferred_height;
615601
widget_class->size_allocate = fl_view_size_allocate;
616-
widget_class->draw = fl_view_draw;
617602
widget_class->key_press_event = fl_view_key_press_event;
618603
widget_class->key_release_event = fl_view_key_release_event;
619604

@@ -740,5 +725,13 @@ void fl_view_end_frame(FlView* view) {
740725
g_list_free(view->children_list);
741726
view->children_list = view->pending_children_list;
742727
view->pending_children_list = nullptr;
728+
729+
struct _ReorderData data = {
730+
.parent_window = gtk_widget_get_window(GTK_WIDGET(view)),
731+
.last_window = nullptr,
732+
};
733+
734+
gtk_container_forall(GTK_CONTAINER(view), fl_view_reorder_forall, &data);
735+
743736
gtk_widget_queue_draw(GTK_WIDGET(view));
744737
}

0 commit comments

Comments
 (0)