]>
Commit | Line | Data |
---|---|---|
5d0fe650 GH |
1 | #ifndef SDL2_H |
2 | #define SDL2_H | |
3 | ||
19dadfcc GH |
4 | /* Avoid compiler warning because macro is redefined in SDL_syswm.h. */ |
5 | #undef WIN32_LEAN_AND_MEAN | |
6 | ||
7 | #include <SDL.h> | |
8 | #include <SDL_syswm.h> | |
a442fe2f DB |
9 | #ifdef CONFIG_SDL_IMAGE |
10 | # include <SDL_image.h> | |
11 | #endif | |
19dadfcc | 12 | |
07333e1c | 13 | #include "ui/kbd-state.h" |
371c4ef6 GH |
14 | #ifdef CONFIG_OPENGL |
15 | # include "ui/egl-helpers.h" | |
16 | #endif | |
17 | ||
5d0fe650 GH |
18 | struct sdl2_console { |
19 | DisplayChangeListener dcl; | |
20 | DisplaySurface *surface; | |
844fd50d | 21 | DisplayOptions *opts; |
5d0fe650 GH |
22 | SDL_Texture *texture; |
23 | SDL_Window *real_window; | |
24 | SDL_Renderer *real_renderer; | |
25 | int idx; | |
26 | int last_vm_running; /* per console for caption reasons */ | |
cb47dc9a | 27 | int x, y, w, h; |
5d0fe650 | 28 | int hidden; |
0b71a5d5 GH |
29 | int opengl; |
30 | int updates; | |
56bdd4b6 | 31 | int idle_counter; |
849bbe60 | 32 | int ignore_hotkeys; |
0b71a5d5 | 33 | SDL_GLContext winctx; |
07333e1c | 34 | QKbdState *kbd; |
cb47dc9a | 35 | #ifdef CONFIG_OPENGL |
46e19e14 | 36 | QemuGLShader *gls; |
371c4ef6 GH |
37 | egl_fb guest_fb; |
38 | egl_fb win_fb; | |
cb47dc9a GH |
39 | bool y0_top; |
40 | bool scanout_mode; | |
41 | #endif | |
5d0fe650 GH |
42 | }; |
43 | ||
2c3056f1 GH |
44 | void sdl2_window_create(struct sdl2_console *scon); |
45 | void sdl2_window_destroy(struct sdl2_console *scon); | |
46 | void sdl2_window_resize(struct sdl2_console *scon); | |
63ed4907 | 47 | void sdl2_poll_events(struct sdl2_console *scon); |
2c3056f1 | 48 | |
8fc1a3f5 GH |
49 | void sdl2_process_key(struct sdl2_console *scon, |
50 | SDL_KeyboardEvent *ev); | |
51 | ||
f1ddebd8 GH |
52 | void sdl2_2d_update(DisplayChangeListener *dcl, |
53 | int x, int y, int w, int h); | |
2c3056f1 GH |
54 | void sdl2_2d_switch(DisplayChangeListener *dcl, |
55 | DisplaySurface *new_surface); | |
62959ffe | 56 | void sdl2_2d_refresh(DisplayChangeListener *dcl); |
0d01b7ce | 57 | void sdl2_2d_redraw(struct sdl2_console *scon); |
877417d9 GH |
58 | bool sdl2_2d_check_format(DisplayChangeListener *dcl, |
59 | pixman_format_code_t format); | |
f1ddebd8 | 60 | |
0b71a5d5 GH |
61 | void sdl2_gl_update(DisplayChangeListener *dcl, |
62 | int x, int y, int w, int h); | |
63 | void sdl2_gl_switch(DisplayChangeListener *dcl, | |
64 | DisplaySurface *new_surface); | |
65 | void sdl2_gl_refresh(DisplayChangeListener *dcl); | |
66 | void sdl2_gl_redraw(struct sdl2_console *scon); | |
67 | ||
cb47dc9a GH |
68 | QEMUGLContext sdl2_gl_create_context(DisplayChangeListener *dcl, |
69 | QEMUGLParams *params); | |
70 | void sdl2_gl_destroy_context(DisplayChangeListener *dcl, QEMUGLContext ctx); | |
71 | int sdl2_gl_make_context_current(DisplayChangeListener *dcl, | |
72 | QEMUGLContext ctx); | |
73 | QEMUGLContext sdl2_gl_get_current_context(DisplayChangeListener *dcl); | |
74 | ||
db6cdfbe | 75 | void sdl2_gl_scanout_disable(DisplayChangeListener *dcl); |
f4c36bda GH |
76 | void sdl2_gl_scanout_texture(DisplayChangeListener *dcl, |
77 | uint32_t backing_id, | |
78 | bool backing_y_0_top, | |
79 | uint32_t backing_width, | |
80 | uint32_t backing_height, | |
81 | uint32_t x, uint32_t y, | |
82 | uint32_t w, uint32_t h); | |
cb47dc9a GH |
83 | void sdl2_gl_scanout_flush(DisplayChangeListener *dcl, |
84 | uint32_t x, uint32_t y, uint32_t w, uint32_t h); | |
85 | ||
5d0fe650 | 86 | #endif /* SDL2_H */ |