console: move gui_update+gui_setup_refresh from vl.c into console.c
Pure code motion, no functional changes. Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
This commit is contained in:
parent
36671fbd06
commit
98a9ad9082
@ -213,8 +213,6 @@ static inline int is_buffer_shared(DisplaySurface *surface)
|
|||||||
return !(surface->flags & QEMU_ALLOCATED_FLAG);
|
return !(surface->flags & QEMU_ALLOCATED_FLAG);
|
||||||
}
|
}
|
||||||
|
|
||||||
void gui_setup_refresh(DisplayState *ds);
|
|
||||||
|
|
||||||
void register_displaychangelistener(DisplayState *ds,
|
void register_displaychangelistener(DisplayState *ds,
|
||||||
DisplayChangeListener *dcl);
|
DisplayChangeListener *dcl);
|
||||||
void unregister_displaychangelistener(DisplayChangeListener *dcl);
|
void unregister_displaychangelistener(DisplayChangeListener *dcl);
|
||||||
|
50
ui/console.c
50
ui/console.c
@ -166,6 +166,56 @@ static void text_console_do_init(CharDriverState *chr, DisplayState *ds);
|
|||||||
static void dpy_gfx_switch_surface(DisplayState *ds,
|
static void dpy_gfx_switch_surface(DisplayState *ds,
|
||||||
DisplaySurface *surface);
|
DisplaySurface *surface);
|
||||||
|
|
||||||
|
static void gui_update(void *opaque)
|
||||||
|
{
|
||||||
|
uint64_t interval = GUI_REFRESH_INTERVAL;
|
||||||
|
DisplayState *ds = opaque;
|
||||||
|
DisplayChangeListener *dcl;
|
||||||
|
|
||||||
|
dpy_refresh(ds);
|
||||||
|
|
||||||
|
QLIST_FOREACH(dcl, &ds->listeners, next) {
|
||||||
|
if (dcl->gui_timer_interval &&
|
||||||
|
dcl->gui_timer_interval < interval) {
|
||||||
|
interval = dcl->gui_timer_interval;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
qemu_mod_timer(ds->gui_timer, interval + qemu_get_clock_ms(rt_clock));
|
||||||
|
}
|
||||||
|
|
||||||
|
static void gui_setup_refresh(DisplayState *ds)
|
||||||
|
{
|
||||||
|
DisplayChangeListener *dcl;
|
||||||
|
bool need_timer = false;
|
||||||
|
bool have_gfx = false;
|
||||||
|
bool have_text = false;
|
||||||
|
|
||||||
|
QLIST_FOREACH(dcl, &ds->listeners, next) {
|
||||||
|
if (dcl->ops->dpy_refresh != NULL) {
|
||||||
|
need_timer = true;
|
||||||
|
}
|
||||||
|
if (dcl->ops->dpy_gfx_update != NULL) {
|
||||||
|
have_gfx = true;
|
||||||
|
}
|
||||||
|
if (dcl->ops->dpy_text_update != NULL) {
|
||||||
|
have_text = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (need_timer && ds->gui_timer == NULL) {
|
||||||
|
ds->gui_timer = qemu_new_timer_ms(rt_clock, gui_update, ds);
|
||||||
|
qemu_mod_timer(ds->gui_timer, qemu_get_clock_ms(rt_clock));
|
||||||
|
}
|
||||||
|
if (!need_timer && ds->gui_timer != NULL) {
|
||||||
|
qemu_del_timer(ds->gui_timer);
|
||||||
|
qemu_free_timer(ds->gui_timer);
|
||||||
|
ds->gui_timer = NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
ds->have_gfx = have_gfx;
|
||||||
|
ds->have_text = have_text;
|
||||||
|
}
|
||||||
|
|
||||||
void graphic_hw_update(QemuConsole *con)
|
void graphic_hw_update(QemuConsole *con)
|
||||||
{
|
{
|
||||||
if (!con) {
|
if (!con) {
|
||||||
|
49
vl.c
49
vl.c
@ -1626,55 +1626,6 @@ MachineInfoList *qmp_query_machines(Error **errp)
|
|||||||
/***********************************************************/
|
/***********************************************************/
|
||||||
/* main execution loop */
|
/* main execution loop */
|
||||||
|
|
||||||
static void gui_update(void *opaque)
|
|
||||||
{
|
|
||||||
uint64_t interval = GUI_REFRESH_INTERVAL;
|
|
||||||
DisplayState *ds = opaque;
|
|
||||||
DisplayChangeListener *dcl;
|
|
||||||
|
|
||||||
dpy_refresh(ds);
|
|
||||||
|
|
||||||
QLIST_FOREACH(dcl, &ds->listeners, next) {
|
|
||||||
if (dcl->gui_timer_interval &&
|
|
||||||
dcl->gui_timer_interval < interval)
|
|
||||||
interval = dcl->gui_timer_interval;
|
|
||||||
}
|
|
||||||
qemu_mod_timer(ds->gui_timer, interval + qemu_get_clock_ms(rt_clock));
|
|
||||||
}
|
|
||||||
|
|
||||||
void gui_setup_refresh(DisplayState *ds)
|
|
||||||
{
|
|
||||||
DisplayChangeListener *dcl;
|
|
||||||
bool need_timer = false;
|
|
||||||
bool have_gfx = false;
|
|
||||||
bool have_text = false;
|
|
||||||
|
|
||||||
QLIST_FOREACH(dcl, &ds->listeners, next) {
|
|
||||||
if (dcl->ops->dpy_refresh != NULL) {
|
|
||||||
need_timer = true;
|
|
||||||
}
|
|
||||||
if (dcl->ops->dpy_gfx_update != NULL) {
|
|
||||||
have_gfx = true;
|
|
||||||
}
|
|
||||||
if (dcl->ops->dpy_text_update != NULL) {
|
|
||||||
have_text = true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (need_timer && ds->gui_timer == NULL) {
|
|
||||||
ds->gui_timer = qemu_new_timer_ms(rt_clock, gui_update, ds);
|
|
||||||
qemu_mod_timer(ds->gui_timer, qemu_get_clock_ms(rt_clock));
|
|
||||||
}
|
|
||||||
if (!need_timer && ds->gui_timer != NULL) {
|
|
||||||
qemu_del_timer(ds->gui_timer);
|
|
||||||
qemu_free_timer(ds->gui_timer);
|
|
||||||
ds->gui_timer = NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
ds->have_gfx = have_gfx;
|
|
||||||
ds->have_text = have_text;
|
|
||||||
}
|
|
||||||
|
|
||||||
struct vm_change_state_entry {
|
struct vm_change_state_entry {
|
||||||
VMChangeStateHandler *cb;
|
VMChangeStateHandler *cb;
|
||||||
void *opaque;
|
void *opaque;
|
||||||
|
Loading…
Reference in New Issue
Block a user