introduce widget_dirty - not only text list might want the optimization
This commit is contained in:
@@ -16,6 +16,7 @@ gui *gui_init(void);
|
||||
|
||||
/* position = -1 to put at the end */
|
||||
void widget_add_child(gui *gui, widget *parent, widget *child, int position);
|
||||
void widget_dirty(gui *gui, widget *this);
|
||||
|
||||
widget *new_toplevel_window(gui *gui, int width, int height, char *title);
|
||||
widget *new_container(gui *gui, int vertical);
|
||||
@@ -44,7 +45,6 @@ void text_list_set_start_line(gui *gui, widget *this, int line);
|
||||
void text_list_get_line(gui *gui, widget *this, int line,
|
||||
char **text, int *color);
|
||||
void text_list_set_color(gui *gui, widget *this, int line, int color);
|
||||
void text_list_dirty(gui *_gui, widget *_this);
|
||||
|
||||
void gui_loop(gui *gui);
|
||||
|
||||
|
||||
@@ -242,12 +242,3 @@ void text_list_set_color(gui *_gui, widget *_this, int line, int color)
|
||||
|
||||
gunlock(g);
|
||||
}
|
||||
|
||||
void text_list_dirty(gui *_gui, widget *_this)
|
||||
{
|
||||
struct gui *g = _gui;
|
||||
struct text_list_widget *this = _this;
|
||||
glock(g);
|
||||
send_event(g, DIRTY, this->common.id);
|
||||
gunlock(g);
|
||||
}
|
||||
|
||||
@@ -180,6 +180,15 @@ void widget_add_child(gui *_gui, widget *parent, widget *child, int position)
|
||||
gunlock(_gui);
|
||||
}
|
||||
|
||||
void widget_dirty(gui *_gui, widget *_this)
|
||||
{
|
||||
struct gui *g = _gui;
|
||||
struct widget *this = _this;
|
||||
glock(g);
|
||||
send_event(g, DIRTY, this->id);
|
||||
gunlock(g);
|
||||
}
|
||||
|
||||
static const char *names[] = {
|
||||
"TOPLEVEL_WINDOW", "CONTAINER", "TEXT_LIST", "XY_PLOT", "BUTTON", "LABEL"
|
||||
};
|
||||
|
||||
@@ -42,7 +42,7 @@ static void *textlist_thread(void *_this)
|
||||
free(s);
|
||||
}
|
||||
if (pthread_mutex_unlock(&this->lock)) abort();
|
||||
if (dirty) text_list_dirty(this->g, this->w);
|
||||
if (dirty) widget_dirty(this->g, this->w);
|
||||
sleepms(1000/this->refresh_rate);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user