Skip to content

Commit 87aff87

Browse files
committed
perf(gui): improve widget destruction performance
1 parent ac3ac06 commit 87aff87

File tree

1 file changed

+14
-0
lines changed

1 file changed

+14
-0
lines changed

src/gui/widget_event.c

+14
Original file line numberDiff line numberDiff line change
@@ -196,6 +196,7 @@ void LCUI_InitWidgetEvent(LCUI_WidgetEvent e, const char *name)
196196
static void Widget_AddEventRecord(LCUI_Widget widget, LCUI_WidgetEventPack pack)
197197
{
198198
WidgetEventRecord record;
199+
199200
LCUIMutex_Lock(&self.mutex);
200201
record = RBTree_CustomGetData(&self.event_records, widget);
201202
if (!record) {
@@ -215,6 +216,7 @@ static int Widget_DeleteEventRecord(LCUI_Widget widget,
215216
int ret = 0;
216217
WidgetEventRecord record;
217218
LinkedListNode *node, *prev;
219+
218220
LCUIMutex_Lock(&self.mutex);
219221
record = RBTree_CustomGetData(&self.event_records, widget);
220222
if (!record) {
@@ -238,6 +240,7 @@ static void WidgetEventTranslator(LCUI_Event e, LCUI_WidgetEventPack pack)
238240
{
239241
WidgetEventHandler handler = e->data;
240242
LCUI_Widget w = pack->widget;
243+
241244
if (!w) {
242245
return;
243246
}
@@ -641,6 +644,10 @@ int Widget_StopEventPropagation(LCUI_Widget widget)
641644
LinkedListNode *node;
642645
WidgetEventRecord record;
643646
LCUI_WidgetEventPack pack;
647+
648+
if (self.event_records.total_node <= 1) {
649+
return 0;
650+
}
644651
LCUIMutex_Lock(&self.mutex);
645652
record = RBTree_CustomGetData(&self.event_records, widget);
646653
if (!record) {
@@ -828,6 +835,9 @@ void LCUIWidget_ClearEventTarget(LCUI_Widget widget)
828835
WidgetEventRecord record;
829836
LCUI_WidgetEventPack pack;
830837

838+
if (self.event_records.total_node <= 1) {
839+
return;
840+
}
831841
LCUIMutex_Lock(&self.mutex);
832842
record = RBTree_CustomGetData(&self.event_records, widget);
833843
if (record) {
@@ -1198,6 +1208,10 @@ int Widget_SetTouchCapture(LCUI_Widget w, int point_id)
11981208
int Widget_ReleaseTouchCapture(LCUI_Widget w, int point_id)
11991209
{
12001210
int ret;
1211+
1212+
if (self.touch_capturers.length <= 1) {
1213+
return 0;
1214+
}
12011215
LCUIMutex_Lock(&self.mutex);
12021216
ret = TouchCapturers_Delete(&self.touch_capturers, w, point_id);
12031217
LCUIMutex_Unlock(&self.mutex);

0 commit comments

Comments
 (0)