ui/console: Check console before emitting GL event
Without this change, The GL output of a console overwrites the other consoles and makes them unusable. Signed-off-by: Akihiko Odaki <akihiko.odaki@gmail.com> Reviewed-by: Marc-André Lureau <marcandre.lureau@redhat.com> Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org> Message-Id: <20220325161216.74582-1-akihiko.odaki@gmail.com> Signed-off-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
This commit is contained in:
parent
d6b6dea77e
commit
1699d00e5b
21
ui/console.c
21
ui/console.c
|
@ -1886,6 +1886,9 @@ void dpy_gl_scanout_disable(QemuConsole *con)
|
||||||
con->scanout.kind = SCANOUT_NONE;
|
con->scanout.kind = SCANOUT_NONE;
|
||||||
}
|
}
|
||||||
QLIST_FOREACH(dcl, &s->listeners, next) {
|
QLIST_FOREACH(dcl, &s->listeners, next) {
|
||||||
|
if (con != (dcl->con ? dcl->con : active_console)) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
if (dcl->ops->dpy_gl_scanout_disable) {
|
if (dcl->ops->dpy_gl_scanout_disable) {
|
||||||
dcl->ops->dpy_gl_scanout_disable(dcl);
|
dcl->ops->dpy_gl_scanout_disable(dcl);
|
||||||
}
|
}
|
||||||
|
@ -1909,6 +1912,9 @@ void dpy_gl_scanout_texture(QemuConsole *con,
|
||||||
x, y, width, height
|
x, y, width, height
|
||||||
};
|
};
|
||||||
QLIST_FOREACH(dcl, &s->listeners, next) {
|
QLIST_FOREACH(dcl, &s->listeners, next) {
|
||||||
|
if (con != (dcl->con ? dcl->con : active_console)) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
if (dcl->ops->dpy_gl_scanout_texture) {
|
if (dcl->ops->dpy_gl_scanout_texture) {
|
||||||
dcl->ops->dpy_gl_scanout_texture(dcl, backing_id,
|
dcl->ops->dpy_gl_scanout_texture(dcl, backing_id,
|
||||||
backing_y_0_top,
|
backing_y_0_top,
|
||||||
|
@ -1927,6 +1933,9 @@ void dpy_gl_scanout_dmabuf(QemuConsole *con,
|
||||||
con->scanout.kind = SCANOUT_DMABUF;
|
con->scanout.kind = SCANOUT_DMABUF;
|
||||||
con->scanout.dmabuf = dmabuf;
|
con->scanout.dmabuf = dmabuf;
|
||||||
QLIST_FOREACH(dcl, &s->listeners, next) {
|
QLIST_FOREACH(dcl, &s->listeners, next) {
|
||||||
|
if (con != (dcl->con ? dcl->con : active_console)) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
if (dcl->ops->dpy_gl_scanout_dmabuf) {
|
if (dcl->ops->dpy_gl_scanout_dmabuf) {
|
||||||
dcl->ops->dpy_gl_scanout_dmabuf(dcl, dmabuf);
|
dcl->ops->dpy_gl_scanout_dmabuf(dcl, dmabuf);
|
||||||
}
|
}
|
||||||
|
@ -1940,6 +1949,9 @@ void dpy_gl_cursor_dmabuf(QemuConsole *con, QemuDmaBuf *dmabuf,
|
||||||
DisplayChangeListener *dcl;
|
DisplayChangeListener *dcl;
|
||||||
|
|
||||||
QLIST_FOREACH(dcl, &s->listeners, next) {
|
QLIST_FOREACH(dcl, &s->listeners, next) {
|
||||||
|
if (con != (dcl->con ? dcl->con : active_console)) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
if (dcl->ops->dpy_gl_cursor_dmabuf) {
|
if (dcl->ops->dpy_gl_cursor_dmabuf) {
|
||||||
dcl->ops->dpy_gl_cursor_dmabuf(dcl, dmabuf,
|
dcl->ops->dpy_gl_cursor_dmabuf(dcl, dmabuf,
|
||||||
have_hot, hot_x, hot_y);
|
have_hot, hot_x, hot_y);
|
||||||
|
@ -1954,6 +1966,9 @@ void dpy_gl_cursor_position(QemuConsole *con,
|
||||||
DisplayChangeListener *dcl;
|
DisplayChangeListener *dcl;
|
||||||
|
|
||||||
QLIST_FOREACH(dcl, &s->listeners, next) {
|
QLIST_FOREACH(dcl, &s->listeners, next) {
|
||||||
|
if (con != (dcl->con ? dcl->con : active_console)) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
if (dcl->ops->dpy_gl_cursor_position) {
|
if (dcl->ops->dpy_gl_cursor_position) {
|
||||||
dcl->ops->dpy_gl_cursor_position(dcl, pos_x, pos_y);
|
dcl->ops->dpy_gl_cursor_position(dcl, pos_x, pos_y);
|
||||||
}
|
}
|
||||||
|
@ -1967,6 +1982,9 @@ void dpy_gl_release_dmabuf(QemuConsole *con,
|
||||||
DisplayChangeListener *dcl;
|
DisplayChangeListener *dcl;
|
||||||
|
|
||||||
QLIST_FOREACH(dcl, &s->listeners, next) {
|
QLIST_FOREACH(dcl, &s->listeners, next) {
|
||||||
|
if (con != (dcl->con ? dcl->con : active_console)) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
if (dcl->ops->dpy_gl_release_dmabuf) {
|
if (dcl->ops->dpy_gl_release_dmabuf) {
|
||||||
dcl->ops->dpy_gl_release_dmabuf(dcl, dmabuf);
|
dcl->ops->dpy_gl_release_dmabuf(dcl, dmabuf);
|
||||||
}
|
}
|
||||||
|
@ -1983,6 +2001,9 @@ void dpy_gl_update(QemuConsole *con,
|
||||||
|
|
||||||
graphic_hw_gl_block(con, true);
|
graphic_hw_gl_block(con, true);
|
||||||
QLIST_FOREACH(dcl, &s->listeners, next) {
|
QLIST_FOREACH(dcl, &s->listeners, next) {
|
||||||
|
if (con != (dcl->con ? dcl->con : active_console)) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
if (dcl->ops->dpy_gl_update) {
|
if (dcl->ops->dpy_gl_update) {
|
||||||
dcl->ops->dpy_gl_update(dcl, x, y, w, h);
|
dcl->ops->dpy_gl_update(dcl, x, y, w, h);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue