From: Gerd Hoffmann <kraxel@redhat.com>
To: qemu-devel@nongnu.org
Cc: Gerd Hoffmann <kraxel@redhat.com>, Anthony Liguori <aliguori@amazon.com>
Subject: [Qemu-devel] [PATCH 07/10] sdl2: move sdl_switch to sdl2-2d.c
Date: Thu, 11 Dec 2014 11:49:30 +0100 [thread overview]
Message-ID: <1418294973-21790-8-git-send-email-kraxel@redhat.com> (raw)
In-Reply-To: <1418294973-21790-1-git-send-email-kraxel@redhat.com>
Move sdl_switch to sdl2-2d.c file, rename to sdl2_2d_switch.
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
---
include/ui/sdl2.h | 6 ++++++
ui/sdl2-2d.c | 42 ++++++++++++++++++++++++++++++++++++++++++
ui/sdl2.c | 50 ++++----------------------------------------------
3 files changed, 52 insertions(+), 46 deletions(-)
diff --git a/include/ui/sdl2.h b/include/ui/sdl2.h
index 0573e2a..2c48c4f 100644
--- a/include/ui/sdl2.h
+++ b/include/ui/sdl2.h
@@ -10,9 +10,15 @@ struct sdl2_console {
int hidden;
};
+void sdl2_window_create(struct sdl2_console *scon);
+void sdl2_window_destroy(struct sdl2_console *scon);
+void sdl2_window_resize(struct sdl2_console *scon);
+
void sdl2_reset_keys(struct sdl2_console *scon);
void sdl2_process_key(struct sdl2_console *scon,
SDL_KeyboardEvent *ev);
void sdl2_2d_update(DisplayChangeListener *dcl,
int x, int y, int w, int h);
+void sdl2_2d_switch(DisplayChangeListener *dcl,
+ DisplaySurface *new_surface);
diff --git a/ui/sdl2-2d.c b/ui/sdl2-2d.c
index 7b0039b..29ada53 100644
--- a/ui/sdl2-2d.c
+++ b/ui/sdl2-2d.c
@@ -59,3 +59,45 @@ void sdl2_2d_update(DisplayChangeListener *dcl,
SDL_RenderCopy(scon->real_renderer, scon->texture, &rect, &rect);
SDL_RenderPresent(scon->real_renderer);
}
+
+void sdl2_2d_switch(DisplayChangeListener *dcl,
+ DisplaySurface *new_surface)
+{
+ struct sdl2_console *scon = container_of(dcl, struct sdl2_console, dcl);
+ DisplaySurface *old_surface = scon->surface;
+ int format = 0;
+
+ scon->surface = new_surface;
+
+ if (scon->texture) {
+ SDL_DestroyTexture(scon->texture);
+ scon->texture = NULL;
+ }
+
+ if (!new_surface) {
+ sdl2_window_destroy(scon);
+ return;
+ }
+
+ if (!scon->real_window) {
+ sdl2_window_create(scon);
+ } else if (old_surface &&
+ ((surface_width(old_surface) != surface_width(new_surface)) ||
+ (surface_height(old_surface) != surface_height(new_surface)))) {
+ sdl2_window_resize(scon);
+ }
+
+ SDL_RenderSetLogicalSize(scon->real_renderer,
+ surface_width(new_surface),
+ surface_height(new_surface));
+
+ if (surface_bits_per_pixel(scon->surface) == 16) {
+ format = SDL_PIXELFORMAT_RGB565;
+ } else if (surface_bits_per_pixel(scon->surface) == 32) {
+ format = SDL_PIXELFORMAT_ARGB8888;
+ }
+ scon->texture = SDL_CreateTexture(scon->real_renderer, format,
+ SDL_TEXTUREACCESS_STREAMING,
+ surface_width(new_surface),
+ surface_height(new_surface));
+}
diff --git a/ui/sdl2.c b/ui/sdl2.c
index 70f79a5..28b1e22 100644
--- a/ui/sdl2.c
+++ b/ui/sdl2.c
@@ -68,7 +68,7 @@ static struct sdl2_console *get_scon_from_window(uint32_t window_id)
return NULL;
}
-static void sdl2_window_create(struct sdl2_console *scon)
+void sdl2_window_create(struct sdl2_console *scon)
{
int flags = 0;
@@ -95,7 +95,7 @@ static void sdl2_window_create(struct sdl2_console *scon)
sdl_update_caption(scon);
}
-static void sdl2_window_destroy(struct sdl2_console *scon)
+void sdl2_window_destroy(struct sdl2_console *scon)
{
if (!scon->real_window) {
return;
@@ -107,7 +107,7 @@ static void sdl2_window_destroy(struct sdl2_console *scon)
scon->real_window = NULL;
}
-static void sdl2_window_resize(struct sdl2_console *scon)
+void sdl2_window_resize(struct sdl2_console *scon)
{
if (!scon->real_window) {
return;
@@ -118,48 +118,6 @@ static void sdl2_window_resize(struct sdl2_console *scon)
surface_height(scon->surface));
}
-static void sdl_switch(DisplayChangeListener *dcl,
- DisplaySurface *new_surface)
-{
- struct sdl2_console *scon = container_of(dcl, struct sdl2_console, dcl);
- DisplaySurface *old_surface = scon->surface;
- int format = 0;
-
- scon->surface = new_surface;
-
- if (scon->texture) {
- SDL_DestroyTexture(scon->texture);
- scon->texture = NULL;
- }
-
- if (!new_surface) {
- sdl2_window_destroy(scon);
- return;
- }
-
- if (!scon->real_window) {
- sdl2_window_create(scon);
- } else if (old_surface &&
- ((surface_width(old_surface) != surface_width(new_surface)) ||
- (surface_height(old_surface) != surface_height(new_surface)))) {
- sdl2_window_resize(scon);
- }
-
- SDL_RenderSetLogicalSize(scon->real_renderer,
- surface_width(new_surface),
- surface_height(new_surface));
-
- if (surface_bits_per_pixel(scon->surface) == 16) {
- format = SDL_PIXELFORMAT_RGB565;
- } else if (surface_bits_per_pixel(scon->surface) == 32) {
- format = SDL_PIXELFORMAT_ARGB8888;
- }
- scon->texture = SDL_CreateTexture(scon->real_renderer, format,
- SDL_TEXTUREACCESS_STREAMING,
- surface_width(new_surface),
- surface_height(new_surface));
-}
-
static void sdl_update_caption(struct sdl2_console *scon)
{
char win_title[1024];
@@ -710,7 +668,7 @@ static void sdl_cleanup(void)
static const DisplayChangeListenerOps dcl_2d_ops = {
.dpy_name = "sdl2-2d",
.dpy_gfx_update = sdl2_2d_update,
- .dpy_gfx_switch = sdl_switch,
+ .dpy_gfx_switch = sdl2_2d_switch,
.dpy_refresh = sdl_refresh,
.dpy_mouse_set = sdl_mouse_warp,
.dpy_cursor_define = sdl_mouse_define,
--
1.8.3.1
next prev parent reply other threads:[~2014-12-11 10:50 UTC|newest]
Thread overview: 26+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-12-11 10:49 [Qemu-devel] [PATCH 00/10] sdl2: fixes, cleanups and opengl preparation Gerd Hoffmann
2014-12-11 10:49 ` [Qemu-devel] [PATCH 01/10] sdl: move version logic from source code to makefile Gerd Hoffmann
2014-12-11 14:05 ` Max Reitz
2014-12-11 10:49 ` [Qemu-devel] [PATCH 02/10] sdl2: rename sdl2_state to sdl2_console, move to header file Gerd Hoffmann
2014-12-11 13:45 ` Max Reitz
2014-12-12 9:03 ` Gerd Hoffmann
2014-12-11 10:49 ` [Qemu-devel] [PATCH 03/10] sdl2: move keyboard input code to new sdl2-input.c Gerd Hoffmann
2014-12-11 14:00 ` Max Reitz
2014-12-12 10:38 ` Gerd Hoffmann
2014-12-11 10:49 ` [Qemu-devel] [PATCH 04/10] sdl2: turn on keyboard grabs Gerd Hoffmann
2014-12-11 14:05 ` Max Reitz
2014-12-11 10:49 ` [Qemu-devel] [PATCH 05/10] sdl2: move sdl_update to new sdl2-2d.c Gerd Hoffmann
2014-12-11 14:14 ` Max Reitz
2014-12-11 10:49 ` [Qemu-devel] [PATCH 06/10] sdl2: overhaul window size handling Gerd Hoffmann
2014-12-11 14:42 ` Max Reitz
2014-12-11 15:06 ` Max Reitz
2014-12-12 10:43 ` Gerd Hoffmann
2014-12-11 10:49 ` Gerd Hoffmann [this message]
2014-12-11 15:00 ` [Qemu-devel] [PATCH 07/10] sdl2: move sdl_switch to sdl2-2d.c Max Reitz
2014-12-11 10:49 ` [Qemu-devel] [PATCH 08/10] sdl2: add+use sdl2_2d_redraw function Gerd Hoffmann
2014-12-11 15:07 ` Max Reitz
2014-12-11 10:49 ` [Qemu-devel] [PATCH 09/10] sdl2: factor out sdl2_poll_events Gerd Hoffmann
2014-12-11 15:17 ` Max Reitz
2014-12-11 10:49 ` [Qemu-devel] [PATCH 10/10] sdl2: move sdl2_2d_refresh to sdl2-2d.c Gerd Hoffmann
2014-12-11 15:19 ` Max Reitz
2014-12-12 10:45 ` Gerd Hoffmann
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1418294973-21790-8-git-send-email-kraxel@redhat.com \
--to=kraxel@redhat.com \
--cc=aliguori@amazon.com \
--cc=qemu-devel@nongnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).