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