Commit 98a9ad90 authored by Gerd Hoffmann's avatar Gerd Hoffmann
Browse files

console: move gui_update+gui_setup_refresh from vl.c into console.c



Pure code motion, no functional changes.

Signed-off-by: default avatarGerd Hoffmann <kraxel@redhat.com>
parent 36671fbd
Loading
Loading
Loading
Loading
+0 −2
Original line number Diff line number Diff line
@@ -213,8 +213,6 @@ static inline int is_buffer_shared(DisplaySurface *surface)
    return !(surface->flags & QEMU_ALLOCATED_FLAG);
}

void gui_setup_refresh(DisplayState *ds);

void register_displaychangelistener(DisplayState *ds,
                                    DisplayChangeListener *dcl);
void unregister_displaychangelistener(DisplayChangeListener *dcl);
+50 −0
Original line number Diff line number Diff line
@@ -166,6 +166,56 @@ static void text_console_do_init(CharDriverState *chr, DisplayState *ds);
static void dpy_gfx_switch_surface(DisplayState *ds,
                                   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)
{
    if (!con) {
+0 −49
Original line number Diff line number Diff line
@@ -1626,55 +1626,6 @@ MachineInfoList *qmp_query_machines(Error **errp)
/***********************************************************/
/* 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 {
    VMChangeStateHandler *cb;
    void *opaque;