Lines Matching refs:con

75 static bool console_compatible_with(QemuConsole *con,
127 void graphic_hw_update_done(QemuConsole *con) in graphic_hw_update_done() argument
129 if (con) { in graphic_hw_update_done()
130 qemu_co_enter_all(&con->dump_queue, NULL); in graphic_hw_update_done()
134 void graphic_hw_update(QemuConsole *con) in graphic_hw_update() argument
137 if (!con) { in graphic_hw_update()
140 if (con->hw_ops->gfx_update) { in graphic_hw_update()
141 con->hw_ops->gfx_update(con->hw); in graphic_hw_update()
142 async = con->hw_ops->gfx_update_async; in graphic_hw_update()
145 graphic_hw_update_done(con); in graphic_hw_update()
149 static void graphic_hw_update_bh(void *con) in graphic_hw_update_bh() argument
151 graphic_hw_update(con); in graphic_hw_update_bh()
154 void qemu_console_co_wait_update(QemuConsole *con) in qemu_console_co_wait_update() argument
156 if (qemu_co_queue_empty(&con->dump_queue)) { in qemu_console_co_wait_update()
159 graphic_hw_update_bh, con); in qemu_console_co_wait_update()
161 qemu_co_queue_wait(&con->dump_queue, NULL); in qemu_console_co_wait_update()
170 void graphic_hw_gl_block(QemuConsole *con, bool block) in graphic_hw_gl_block() argument
173 assert(con != NULL); in graphic_hw_gl_block()
176 con->gl_block++; in graphic_hw_gl_block()
178 con->gl_block--; in graphic_hw_gl_block()
180 assert(con->gl_block >= 0); in graphic_hw_gl_block()
181 if (!con->hw_ops->gl_block) { in graphic_hw_gl_block()
184 if ((block && con->gl_block != 1) || (!block && con->gl_block != 0)) { in graphic_hw_gl_block()
187 con->hw_ops->gl_block(con->hw, block); in graphic_hw_gl_block()
192 timer_mod(con->gl_unblock_timer, timeout); in graphic_hw_gl_block()
194 timer_del(con->gl_unblock_timer); in graphic_hw_gl_block()
198 int qemu_console_get_window_id(QemuConsole *con) in qemu_console_get_window_id() argument
200 return con->window_id; in qemu_console_get_window_id()
203 void qemu_console_set_window_id(QemuConsole *con, int window_id) in qemu_console_set_window_id() argument
205 con->window_id = window_id; in qemu_console_set_window_id()
208 void graphic_hw_invalidate(QemuConsole *con) in graphic_hw_invalidate() argument
210 if (con && con->hw_ops->invalidate) { in graphic_hw_invalidate()
211 con->hw_ops->invalidate(con->hw); in graphic_hw_invalidate()
215 void graphic_hw_text_update(QemuConsole *con, console_ch_t *chardata) in graphic_hw_text_update() argument
217 if (con && con->hw_ops->text_update) { in graphic_hw_text_update()
218 con->hw_ops->text_update(con->hw, chardata); in graphic_hw_text_update()
237 static void dpy_gfx_create_texture(QemuConsole *con, DisplaySurface *surface) in dpy_gfx_create_texture() argument
239 if (con->gl && con->gl->ops->dpy_gl_ctx_create_texture) { in dpy_gfx_create_texture()
240 con->gl->ops->dpy_gl_ctx_create_texture(con->gl, surface); in dpy_gfx_create_texture()
244 static void dpy_gfx_destroy_texture(QemuConsole *con, DisplaySurface *surface) in dpy_gfx_destroy_texture() argument
246 if (con->gl && con->gl->ops->dpy_gl_ctx_destroy_texture) { in dpy_gfx_destroy_texture()
247 con->gl->ops->dpy_gl_ctx_destroy_texture(con->gl, surface); in dpy_gfx_destroy_texture()
251 static void dpy_gfx_update_texture(QemuConsole *con, DisplaySurface *surface, in dpy_gfx_update_texture() argument
254 if (con->gl && con->gl->ops->dpy_gl_ctx_update_texture) { in dpy_gfx_update_texture()
255 con->gl->ops->dpy_gl_ctx_update_texture(con->gl, surface, x, y, w, h); in dpy_gfx_update_texture()
265 QemuConsole *con = dcl->con; in displaychangelistener_display_console() local
267 if (!con || !console_compatible_with(con, dcl, errp)) { in displaychangelistener_display_console()
271 if (con) { in displaychangelistener_display_console()
272 dpy_gfx_create_texture(con, dummy); in displaychangelistener_display_console()
278 dpy_gfx_create_texture(con, con->surface); in displaychangelistener_display_console()
279 displaychangelistener_gfx_switch(dcl, con->surface, in displaychangelistener_display_console()
280 con->scanout.kind == SCANOUT_SURFACE); in displaychangelistener_display_console()
282 if (con->scanout.kind == SCANOUT_DMABUF && in displaychangelistener_display_console()
284 dcl->ops->dpy_gl_scanout_dmabuf(dcl, con->scanout.dmabuf); in displaychangelistener_display_console()
285 } else if (con->scanout.kind == SCANOUT_TEXTURE && in displaychangelistener_display_console()
288 con->scanout.texture.backing_id, in displaychangelistener_display_console()
289 con->scanout.texture.backing_y_0_top, in displaychangelistener_display_console()
290 con->scanout.texture.backing_width, in displaychangelistener_display_console()
291 con->scanout.texture.backing_height, in displaychangelistener_display_console()
292 con->scanout.texture.x, in displaychangelistener_display_console()
293 con->scanout.texture.y, in displaychangelistener_display_console()
294 con->scanout.texture.width, in displaychangelistener_display_console()
295 con->scanout.texture.height, in displaychangelistener_display_console()
296 con->scanout.texture.d3d_tex2d); in displaychangelistener_display_console()
573 bool console_has_gl(QemuConsole *con) in console_has_gl() argument
575 return con->gl != NULL; in console_has_gl()
591 static bool console_compatible_with(QemuConsole *con, in console_compatible_with() argument
596 flags = con->hw_ops->get_flags ? con->hw_ops->get_flags(con->hw) : 0; in console_compatible_with()
598 if (console_has_gl(con) && in console_compatible_with()
599 !con->gl->ops->dpy_gl_ctx_is_compatible_dcl(con->gl, dcl)) { in console_compatible_with()
606 !console_has_gl(con)) { in console_compatible_with()
621 void console_handle_touch_event(QemuConsole *con, in console_handle_touch_event() argument
664 qemu_input_queue_mtt(con, update, i, slot->tracking_id); in console_handle_touch_event()
667 qemu_input_queue_mtt(con, update, i, slot->tracking_id); in console_handle_touch_event()
668 qemu_input_queue_btn(con, INPUT_BUTTON_TOUCH, true); in console_handle_touch_event()
669 qemu_input_queue_mtt_abs(con, in console_handle_touch_event()
673 qemu_input_queue_mtt_abs(con, in console_handle_touch_event()
686 void qemu_console_set_display_gl_ctx(QemuConsole *con, DisplayGLCtx *gl) in qemu_console_set_display_gl_ctx() argument
689 assert(con); in qemu_console_set_display_gl_ctx()
690 if (con->gl) { in qemu_console_set_display_gl_ctx()
694 con->gl = gl; in qemu_console_set_display_gl_ctx()
698 dcl_set_graphic_cursor(DisplayChangeListener *dcl, QemuGraphicConsole *con) in dcl_set_graphic_cursor() argument
700 if (con && con->cursor && dcl->ops->dpy_cursor_define) { in dcl_set_graphic_cursor()
701 dcl->ops->dpy_cursor_define(dcl, con->cursor); in dcl_set_graphic_cursor()
703 if (con && dcl->ops->dpy_mouse_set) { in dcl_set_graphic_cursor()
704 dcl->ops->dpy_mouse_set(dcl, con->cursor_x, con->cursor_y, con->cursor_on); in dcl_set_graphic_cursor()
716 if (dcl->con) { in register_displaychangelistener()
717 dcl->con->dcls++; in register_displaychangelistener()
720 if (QEMU_IS_GRAPHIC_CONSOLE(dcl->con)) { in register_displaychangelistener()
721 dcl_set_graphic_cursor(dcl, QEMU_GRAPHIC_CONSOLE(dcl->con)); in register_displaychangelistener()
722 } else if (QEMU_IS_TEXT_CONSOLE(dcl->con)) { in register_displaychangelistener()
723 qemu_text_console_update_size(QEMU_TEXT_CONSOLE(dcl->con)); in register_displaychangelistener()
743 if (dcl->con) { in unregister_displaychangelistener()
744 dcl->con->dcls--; in unregister_displaychangelistener()
753 QemuConsole *con = opaque; in dpy_set_ui_info_timer() local
754 uint32_t head = qemu_console_get_head(con); in dpy_set_ui_info_timer()
756 con->hw_ops->ui_info(con->hw, head, &con->ui_info); in dpy_set_ui_info_timer()
759 bool dpy_ui_info_supported(const QemuConsole *con) in dpy_ui_info_supported() argument
761 if (con == NULL) { in dpy_ui_info_supported()
765 return con->hw_ops->ui_info != NULL; in dpy_ui_info_supported()
768 const QemuUIInfo *dpy_get_ui_info(const QemuConsole *con) in dpy_get_ui_info() argument
770 assert(dpy_ui_info_supported(con)); in dpy_get_ui_info()
772 return &con->ui_info; in dpy_get_ui_info()
775 int dpy_set_ui_info(QemuConsole *con, QemuUIInfo *info, bool delay) in dpy_set_ui_info() argument
777 if (!dpy_ui_info_supported(con)) { in dpy_set_ui_info()
780 if (memcmp(&con->ui_info, info, sizeof(con->ui_info)) == 0) { in dpy_set_ui_info()
790 con->ui_info = *info; in dpy_set_ui_info()
791 timer_mod(con->ui_timer, in dpy_set_ui_info()
796 void dpy_gfx_update(QemuConsole *con, int x, int y, int w, int h) in dpy_gfx_update() argument
798 DisplayState *s = con->ds; in dpy_gfx_update()
800 int width = qemu_console_get_width(con, x + w); in dpy_gfx_update()
801 int height = qemu_console_get_height(con, y + h); in dpy_gfx_update()
810 if (!qemu_console_is_visible(con)) { in dpy_gfx_update()
813 dpy_gfx_update_texture(con, con->surface, x, y, w, h); in dpy_gfx_update()
815 if (con != dcl->con) { in dpy_gfx_update()
824 void dpy_gfx_update_full(QemuConsole *con) in dpy_gfx_update_full() argument
826 int w = qemu_console_get_width(con, 0); in dpy_gfx_update_full()
827 int h = qemu_console_get_height(con, 0); in dpy_gfx_update_full()
829 dpy_gfx_update(con, 0, 0, w, h); in dpy_gfx_update_full()
832 void dpy_gfx_replace_surface(QemuConsole *con, in dpy_gfx_replace_surface() argument
836 DisplayState *s = con->ds; in dpy_gfx_replace_surface()
837 DisplaySurface *old_surface = con->surface; in dpy_gfx_replace_surface()
857 con->scanout.kind = SCANOUT_SURFACE; in dpy_gfx_replace_surface()
858 con->surface = new_surface; in dpy_gfx_replace_surface()
859 dpy_gfx_create_texture(con, new_surface); in dpy_gfx_replace_surface()
861 if (con != dcl->con) { in dpy_gfx_replace_surface()
866 dpy_gfx_destroy_texture(con, old_surface); in dpy_gfx_replace_surface()
870 bool dpy_gfx_check_format(QemuConsole *con, in dpy_gfx_check_format() argument
874 DisplayState *s = con->ds; in dpy_gfx_check_format()
877 if (dcl->con && dcl->con != con) { in dpy_gfx_check_format()
906 void dpy_text_cursor(QemuConsole *con, int x, int y) in dpy_text_cursor() argument
908 DisplayState *s = con->ds; in dpy_text_cursor()
911 if (!qemu_console_is_visible(con)) { in dpy_text_cursor()
915 if (con != dcl->con) { in dpy_text_cursor()
924 void dpy_text_update(QemuConsole *con, int x, int y, int w, int h) in dpy_text_update() argument
926 DisplayState *s = con->ds; in dpy_text_update()
929 if (!qemu_console_is_visible(con)) { in dpy_text_update()
933 if (con != dcl->con) { in dpy_text_update()
942 void dpy_text_resize(QemuConsole *con, int w, int h) in dpy_text_resize() argument
944 DisplayState *s = con->ds; in dpy_text_resize()
947 if (!qemu_console_is_visible(con)) { in dpy_text_resize()
951 if (con != dcl->con) { in dpy_text_resize()
962 QemuGraphicConsole *con = QEMU_GRAPHIC_CONSOLE(c); in dpy_mouse_set() local
966 con->cursor_x = x; in dpy_mouse_set()
967 con->cursor_y = y; in dpy_mouse_set()
968 con->cursor_on = on; in dpy_mouse_set()
973 if (c != dcl->con) { in dpy_mouse_set()
984 QemuGraphicConsole *con = QEMU_GRAPHIC_CONSOLE(c); in dpy_cursor_define() local
988 cursor_unref(con->cursor); in dpy_cursor_define()
989 con->cursor = cursor_ref(cursor); in dpy_cursor_define()
994 if (c != dcl->con) { in dpy_cursor_define()
1003 bool dpy_cursor_define_supported(QemuConsole *con) in dpy_cursor_define_supported() argument
1005 DisplayState *s = con->ds; in dpy_cursor_define_supported()
1016 QEMUGLContext dpy_gl_ctx_create(QemuConsole *con, in dpy_gl_ctx_create() argument
1019 assert(con->gl); in dpy_gl_ctx_create()
1020 return con->gl->ops->dpy_gl_ctx_create(con->gl, qparams); in dpy_gl_ctx_create()
1023 void dpy_gl_ctx_destroy(QemuConsole *con, QEMUGLContext ctx) in dpy_gl_ctx_destroy() argument
1025 assert(con->gl); in dpy_gl_ctx_destroy()
1026 con->gl->ops->dpy_gl_ctx_destroy(con->gl, ctx); in dpy_gl_ctx_destroy()
1029 int dpy_gl_ctx_make_current(QemuConsole *con, QEMUGLContext ctx) in dpy_gl_ctx_make_current() argument
1031 assert(con->gl); in dpy_gl_ctx_make_current()
1032 return con->gl->ops->dpy_gl_ctx_make_current(con->gl, ctx); in dpy_gl_ctx_make_current()
1035 void dpy_gl_scanout_disable(QemuConsole *con) in dpy_gl_scanout_disable() argument
1037 DisplayState *s = con->ds; in dpy_gl_scanout_disable()
1040 if (con->scanout.kind != SCANOUT_SURFACE) { in dpy_gl_scanout_disable()
1041 con->scanout.kind = SCANOUT_NONE; in dpy_gl_scanout_disable()
1044 if (con != dcl->con) { in dpy_gl_scanout_disable()
1053 void dpy_gl_scanout_texture(QemuConsole *con, in dpy_gl_scanout_texture() argument
1062 DisplayState *s = con->ds; in dpy_gl_scanout_texture()
1065 con->scanout.kind = SCANOUT_TEXTURE; in dpy_gl_scanout_texture()
1066 con->scanout.texture = (ScanoutTexture) { in dpy_gl_scanout_texture()
1071 if (con != dcl->con) { in dpy_gl_scanout_texture()
1084 void dpy_gl_scanout_dmabuf(QemuConsole *con, in dpy_gl_scanout_dmabuf() argument
1087 DisplayState *s = con->ds; in dpy_gl_scanout_dmabuf()
1090 con->scanout.kind = SCANOUT_DMABUF; in dpy_gl_scanout_dmabuf()
1091 con->scanout.dmabuf = dmabuf; in dpy_gl_scanout_dmabuf()
1093 if (con != dcl->con) { in dpy_gl_scanout_dmabuf()
1102 void dpy_gl_cursor_dmabuf(QemuConsole *con, QemuDmaBuf *dmabuf, in dpy_gl_cursor_dmabuf() argument
1105 DisplayState *s = con->ds; in dpy_gl_cursor_dmabuf()
1109 if (con != dcl->con) { in dpy_gl_cursor_dmabuf()
1119 void dpy_gl_cursor_position(QemuConsole *con, in dpy_gl_cursor_position() argument
1122 DisplayState *s = con->ds; in dpy_gl_cursor_position()
1126 if (con != dcl->con) { in dpy_gl_cursor_position()
1135 void dpy_gl_release_dmabuf(QemuConsole *con, in dpy_gl_release_dmabuf() argument
1138 DisplayState *s = con->ds; in dpy_gl_release_dmabuf()
1142 if (con != dcl->con) { in dpy_gl_release_dmabuf()
1151 void dpy_gl_update(QemuConsole *con, in dpy_gl_update() argument
1154 DisplayState *s = con->ds; in dpy_gl_update()
1157 assert(con->gl); in dpy_gl_update()
1159 graphic_hw_gl_block(con, true); in dpy_gl_update()
1161 if (con != dcl->con) { in dpy_gl_update()
1168 graphic_hw_gl_block(con, false); in dpy_gl_update()
1190 QemuConsole *con; in init_displaystate() local
1192 QTAILQ_FOREACH(con, &consoles, next) { in init_displaystate()
1196 name = g_strdup_printf("console[%d]", con->index); in init_displaystate()
1198 name, OBJECT(con)); in init_displaystate()
1205 void graphic_console_set_hwops(QemuConsole *con, in graphic_console_set_hwops() argument
1209 con->hw_ops = hw_ops; in graphic_console_set_hwops()
1210 con->hw = opaque; in graphic_console_set_hwops()
1251 void graphic_console_close(QemuConsole *con) in graphic_console_close() argument
1256 int width = qemu_console_get_width(con, 640); in graphic_console_close()
1257 int height = qemu_console_get_height(con, 480); in graphic_console_close()
1259 trace_console_gfx_close(con->index); in graphic_console_close()
1260 object_property_set_link(OBJECT(con), "device", NULL, &error_abort); in graphic_console_close()
1261 graphic_console_set_hwops(con, &unused_ops, NULL); in graphic_console_close()
1263 if (con->gl) { in graphic_console_close()
1264 dpy_gl_scanout_disable(con); in graphic_console_close()
1267 dpy_gfx_replace_surface(con, surface); in graphic_console_close()
1272 QemuConsole *con; in qemu_console_lookup_default() local
1274 QTAILQ_FOREACH(con, &consoles, next) { in qemu_console_lookup_default()
1275 if (QEMU_IS_GRAPHIC_CONSOLE(con)) { in qemu_console_lookup_default()
1276 return con; in qemu_console_lookup_default()
1284 QemuConsole *con; in qemu_console_lookup_by_index() local
1286 QTAILQ_FOREACH(con, &consoles, next) { in qemu_console_lookup_by_index()
1287 if (con->index == index) { in qemu_console_lookup_by_index()
1288 return con; in qemu_console_lookup_by_index()
1296 QemuConsole *con; in qemu_console_lookup_by_device() local
1300 QTAILQ_FOREACH(con, &consoles, next) { in qemu_console_lookup_by_device()
1301 obj = object_property_get_link(OBJECT(con), in qemu_console_lookup_by_device()
1306 h = object_property_get_uint(OBJECT(con), in qemu_console_lookup_by_device()
1311 return con; in qemu_console_lookup_by_device()
1320 QemuConsole *con; in qemu_console_lookup_by_device_name() local
1329 con = qemu_console_lookup_by_device(dev, head); in qemu_console_lookup_by_device_name()
1330 if (con == NULL) { in qemu_console_lookup_by_device_name()
1336 return con; in qemu_console_lookup_by_device_name()
1341 QemuConsole *con; in qemu_graphic_console_lookup_unused() local
1344 QTAILQ_FOREACH(con, &consoles, next) { in qemu_graphic_console_lookup_unused()
1345 if (!QEMU_IS_GRAPHIC_CONSOLE(con) || con->hw_ops != &unused_ops) { in qemu_graphic_console_lookup_unused()
1348 obj = object_property_get_link(OBJECT(con), in qemu_graphic_console_lookup_unused()
1353 return con; in qemu_graphic_console_lookup_unused()
1358 QEMUCursor *qemu_console_get_cursor(QemuConsole *con) in qemu_console_get_cursor() argument
1360 return QEMU_IS_GRAPHIC_CONSOLE(con) ? QEMU_GRAPHIC_CONSOLE(con)->cursor : NULL; in qemu_console_get_cursor()
1363 bool qemu_console_is_visible(QemuConsole *con) in qemu_console_is_visible() argument
1365 return con->dcls > 0; in qemu_console_is_visible()
1368 bool qemu_console_is_graphic(QemuConsole *con) in qemu_console_is_graphic() argument
1370 return con && QEMU_IS_GRAPHIC_CONSOLE(con); in qemu_console_is_graphic()
1373 bool qemu_console_is_fixedsize(QemuConsole *con) in qemu_console_is_fixedsize() argument
1375 return con && (QEMU_IS_GRAPHIC_CONSOLE(con) || QEMU_IS_FIXED_TEXT_CONSOLE(con)); in qemu_console_is_fixedsize()
1378 bool qemu_console_is_gl_blocked(QemuConsole *con) in qemu_console_is_gl_blocked() argument
1380 assert(con != NULL); in qemu_console_is_gl_blocked()
1381 return con->gl_block; in qemu_console_is_gl_blocked()
1386 QemuConsole *con; in qemu_graphic_console_is_multihead() local
1388 QTAILQ_FOREACH(con, &consoles, next) { in qemu_graphic_console_is_multihead()
1391 if (!QEMU_IS_GRAPHIC_CONSOLE(con)) { in qemu_graphic_console_is_multihead()
1395 candidate = QEMU_GRAPHIC_CONSOLE(con); in qemu_graphic_console_is_multihead()
1407 char *qemu_console_get_label(QemuConsole *con) in qemu_console_get_label() argument
1409 if (QEMU_IS_GRAPHIC_CONSOLE(con)) { in qemu_console_get_label()
1410 QemuGraphicConsole *c = QEMU_GRAPHIC_CONSOLE(con); in qemu_console_get_label()
1429 } else if (QEMU_IS_TEXT_CONSOLE(con)) { in qemu_console_get_label()
1430 const char *label = qemu_text_console_get_label(QEMU_TEXT_CONSOLE(con)); in qemu_console_get_label()
1436 return g_strdup_printf("vc%d", con->index); in qemu_console_get_label()
1439 int qemu_console_get_index(QemuConsole *con) in qemu_console_get_index() argument
1441 return con ? con->index : -1; in qemu_console_get_index()
1444 uint32_t qemu_console_get_head(QemuConsole *con) in qemu_console_get_head() argument
1446 if (con == NULL) { in qemu_console_get_head()
1449 if (QEMU_IS_GRAPHIC_CONSOLE(con)) { in qemu_console_get_head()
1450 return QEMU_GRAPHIC_CONSOLE(con)->head; in qemu_console_get_head()
1455 int qemu_console_get_width(QemuConsole *con, int fallback) in qemu_console_get_width() argument
1457 if (con == NULL) { in qemu_console_get_width()
1460 switch (con->scanout.kind) { in qemu_console_get_width()
1462 return qemu_dmabuf_get_width(con->scanout.dmabuf); in qemu_console_get_width()
1464 return con->scanout.texture.width; in qemu_console_get_width()
1466 return surface_width(con->surface); in qemu_console_get_width()
1472 int qemu_console_get_height(QemuConsole *con, int fallback) in qemu_console_get_height() argument
1474 if (con == NULL) { in qemu_console_get_height()
1477 switch (con->scanout.kind) { in qemu_console_get_height()
1479 return qemu_dmabuf_get_height(con->scanout.dmabuf); in qemu_console_get_height()
1481 return con->scanout.texture.height; in qemu_console_get_height()
1483 return surface_height(con->surface); in qemu_console_get_height()