[gtk+/wip/mir-gdkgl: 2/7] mir: initialize pixel formats once and keep in display
- From: Marco Trevisan <marcotrevi src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gtk+/wip/mir-gdkgl: 2/7] mir: initialize pixel formats once and keep in display
- Date: Tue, 18 Nov 2014 23:03:00 +0000 (UTC)
commit 165b5a9f53acf7e8b05279844f07ef7bfcefc585
Author: Marco Trevisan (TreviƱo) <mail 3v1n0 net>
Date: Tue Nov 18 22:23:52 2014 +0100
mir: initialize pixel formats once and keep in display
gdk/mir/gdkmir-private.h | 2 ++
gdk/mir/gdkmirdisplay.c | 45 +++++++++++++++++++++++++++++++++++++++++++++
2 files changed, 47 insertions(+), 0 deletions(-)
---
diff --git a/gdk/mir/gdkmir-private.h b/gdk/mir/gdkmir-private.h
index 8305096..22a1fa4 100644
--- a/gdk/mir/gdkmir-private.h
+++ b/gdk/mir/gdkmir-private.h
@@ -77,6 +77,8 @@ void _gdk_mir_window_reference_unref (GdkMirWindowReference *ref);
void _gdk_mir_event_source_queue (GdkMirWindowReference *window_ref, const MirEvent *event);
+MirPixelFormat _gdk_mir_display_get_pixel_format (GdkDisplay *display, MirBufferUsage usage);
+
void _gdk_mir_print_modifiers (unsigned int modifiers);
void _gdk_mir_print_key_event (const MirKeyEvent *event);
diff --git a/gdk/mir/gdkmirdisplay.c b/gdk/mir/gdkmirdisplay.c
index b44cc79..0374be3 100644
--- a/gdk/mir/gdkmirdisplay.c
+++ b/gdk/mir/gdkmirdisplay.c
@@ -46,6 +46,9 @@ typedef struct GdkMirDisplay
GdkScreen *screen;
GdkKeymap *keymap;
+
+ MirPixelFormat sw_pixel_format;
+ MirPixelFormat hw_pixel_format;
} GdkMirDisplay;
typedef struct GdkMirDisplayClass
@@ -53,6 +56,8 @@ typedef struct GdkMirDisplayClass
GdkDisplayClass parent_class;
} GdkMirDisplayClass;
+static void initialize_pixel_formats (GdkMirDisplay *display);
+
/**
* SECTION:mir_interaction
* @Short_description: Mir backend-specific functions
@@ -112,6 +117,7 @@ _gdk_mir_display_open (const gchar *display_name)
display->connection = connection;
GDK_DISPLAY (display)->device_manager = _gdk_mir_device_manager_new (GDK_DISPLAY (display));
display->screen = _gdk_mir_screen_new (GDK_DISPLAY (display));
+ initialize_pixel_formats (display);
g_signal_emit_by_name (display, "opened");
@@ -488,6 +494,45 @@ gdk_mir_display_utf8_to_string_target (GdkDisplay *display,
}
static void
+initialize_pixel_formats (GdkMirDisplay *display)
+{
+ MirPixelFormat formats[mir_pixel_formats];
+ unsigned int n_formats, i;
+
+ mir_connection_get_available_surface_formats (display->connection, formats,
+ mir_pixel_formats, &n_formats);
+
+ display->sw_pixel_format = mir_pixel_format_invalid;
+ display->hw_pixel_format = mir_pixel_format_invalid;
+
+ for (i = 0; i < n_formats; i++)
+ {
+ switch (formats[i])
+ {
+ case mir_pixel_format_abgr_8888:
+ case mir_pixel_format_xbgr_8888:
+ case mir_pixel_format_argb_8888:
+ case mir_pixel_format_xrgb_8888:
+ display->hw_pixel_format = formats[i];
+ break;
+ default:
+ continue;
+ }
+
+ if (display->hw_pixel_format != mir_pixel_format_invalid)
+ break;
+ }
+
+ for (i = 0; i < n_formats; i++)
+ {
+ if (formats[i] == mir_pixel_format_argb_8888)
+ {
+ display->sw_pixel_format = formats[i];
+ break;
+ }
+ }
+}
+
gdk_mir_display_init (GdkMirDisplay *display)
{
display->event_source = _gdk_mir_event_source_new (GDK_DISPLAY (display));
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]