|
Florian Müllner |
4e32261 |
From c642a96d33d5cf2fe7f2950bf48b9bbb5e5c8c5f Mon Sep 17 00:00:00 2001
|
|
![](https://seccdn.libravatar.org/avatar/d13caac2dfd3ba477db2e3e0ad01ad443cf2cd9d160e6f3d7a7a82345ed68676?s=16&d=retro) |
341cacd |
From: Ray Strode <rstrode@redhat.com>
|
|
![](https://seccdn.libravatar.org/avatar/d13caac2dfd3ba477db2e3e0ad01ad443cf2cd9d160e6f3d7a7a82345ed68676?s=16&d=retro) |
341cacd |
Date: Mon, 11 May 2015 16:53:41 -0400
|
|
![](https://seccdn.libravatar.org/avatar/d13caac2dfd3ba477db2e3e0ad01ad443cf2cd9d160e6f3d7a7a82345ed68676?s=16&d=retro) |
341cacd |
Subject: [PATCH] Force cursor update after applying configuration
|
|
![](https://seccdn.libravatar.org/avatar/d13caac2dfd3ba477db2e3e0ad01ad443cf2cd9d160e6f3d7a7a82345ed68676?s=16&d=retro) |
341cacd |
|
|
![](https://seccdn.libravatar.org/avatar/d13caac2dfd3ba477db2e3e0ad01ad443cf2cd9d160e6f3d7a7a82345ed68676?s=16&d=retro) |
341cacd |
The qxl kms driver has a bug where the cursor gets hidden
|
|
![](https://seccdn.libravatar.org/avatar/d13caac2dfd3ba477db2e3e0ad01ad443cf2cd9d160e6f3d7a7a82345ed68676?s=16&d=retro) |
341cacd |
implicitly after a drmModeSetCrtc call.
|
|
![](https://seccdn.libravatar.org/avatar/d13caac2dfd3ba477db2e3e0ad01ad443cf2cd9d160e6f3d7a7a82345ed68676?s=16&d=retro) |
341cacd |
|
|
![](https://seccdn.libravatar.org/avatar/d13caac2dfd3ba477db2e3e0ad01ad443cf2cd9d160e6f3d7a7a82345ed68676?s=16&d=retro) |
341cacd |
This commit works around the bug by forcing a drmModeSetCursor2
|
|
![](https://seccdn.libravatar.org/avatar/d13caac2dfd3ba477db2e3e0ad01ad443cf2cd9d160e6f3d7a7a82345ed68676?s=16&d=retro) |
11e24ea |
call after the drmModeSetCrtc calls.
|
|
![](https://seccdn.libravatar.org/avatar/d13caac2dfd3ba477db2e3e0ad01ad443cf2cd9d160e6f3d7a7a82345ed68676?s=16&d=retro) |
11e24ea |
|
|
![](https://seccdn.libravatar.org/avatar/d13caac2dfd3ba477db2e3e0ad01ad443cf2cd9d160e6f3d7a7a82345ed68676?s=16&d=retro) |
11e24ea |
This is pretty hacky and won't ever go upstream.
|
|
![](https://seccdn.libravatar.org/avatar/d13caac2dfd3ba477db2e3e0ad01ad443cf2cd9d160e6f3d7a7a82345ed68676?s=16&d=retro) |
341cacd |
|
|
![](https://seccdn.libravatar.org/avatar/d13caac2dfd3ba477db2e3e0ad01ad443cf2cd9d160e6f3d7a7a82345ed68676?s=16&d=retro) |
341cacd |
https://bugzilla.gnome.org/show_bug.cgi?id=746078
|
|
![](https://seccdn.libravatar.org/avatar/d13caac2dfd3ba477db2e3e0ad01ad443cf2cd9d160e6f3d7a7a82345ed68676?s=16&d=retro) |
341cacd |
---
|
|
![](https://seccdn.libravatar.org/avatar/d13caac2dfd3ba477db2e3e0ad01ad443cf2cd9d160e6f3d7a7a82345ed68676?s=16&d=retro) |
11e24ea |
src/backends/native/meta-launcher.c | 37 +++++++++++++++++++++++++
|
|
![](https://seccdn.libravatar.org/avatar/d13caac2dfd3ba477db2e3e0ad01ad443cf2cd9d160e6f3d7a7a82345ed68676?s=16&d=retro) |
341cacd |
src/backends/native/meta-monitor-manager-kms.c | 38 ++++++++++++++++++++++++++
|
|
![](https://seccdn.libravatar.org/avatar/d13caac2dfd3ba477db2e3e0ad01ad443cf2cd9d160e6f3d7a7a82345ed68676?s=16&d=retro) |
11e24ea |
2 files changed, 75 insertions(+)
|
|
![](https://seccdn.libravatar.org/avatar/d13caac2dfd3ba477db2e3e0ad01ad443cf2cd9d160e6f3d7a7a82345ed68676?s=16&d=retro) |
341cacd |
|
|
![](https://seccdn.libravatar.org/avatar/d13caac2dfd3ba477db2e3e0ad01ad443cf2cd9d160e6f3d7a7a82345ed68676?s=16&d=retro) |
11e24ea |
diff --git a/src/backends/native/meta-launcher.c b/src/backends/native/meta-launcher.c
|
|
Florian Müllner |
4e32261 |
index 7cd338b..8a6db23 100644
|
|
![](https://seccdn.libravatar.org/avatar/d13caac2dfd3ba477db2e3e0ad01ad443cf2cd9d160e6f3d7a7a82345ed68676?s=16&d=retro) |
11e24ea |
--- a/src/backends/native/meta-launcher.c
|
|
![](https://seccdn.libravatar.org/avatar/d13caac2dfd3ba477db2e3e0ad01ad443cf2cd9d160e6f3d7a7a82345ed68676?s=16&d=retro) |
11e24ea |
+++ b/src/backends/native/meta-launcher.c
|
|
Florian Müllner |
4e32261 |
@@ -102,6 +102,30 @@ get_seat_proxy (GCancellable *cancellable,
|
|
![](https://seccdn.libravatar.org/avatar/d13caac2dfd3ba477db2e3e0ad01ad443cf2cd9d160e6f3d7a7a82345ed68676?s=16&d=retro) |
11e24ea |
}
|
|
![](https://seccdn.libravatar.org/avatar/d13caac2dfd3ba477db2e3e0ad01ad443cf2cd9d160e6f3d7a7a82345ed68676?s=16&d=retro) |
11e24ea |
|
|
![](https://seccdn.libravatar.org/avatar/d13caac2dfd3ba477db2e3e0ad01ad443cf2cd9d160e6f3d7a7a82345ed68676?s=16&d=retro) |
11e24ea |
static void
|
|
![](https://seccdn.libravatar.org/avatar/d13caac2dfd3ba477db2e3e0ad01ad443cf2cd9d160e6f3d7a7a82345ed68676?s=16&d=retro) |
11e24ea |
+frame_callback (CoglOnscreen *onscreen,
|
|
![](https://seccdn.libravatar.org/avatar/d13caac2dfd3ba477db2e3e0ad01ad443cf2cd9d160e6f3d7a7a82345ed68676?s=16&d=retro) |
11e24ea |
+ CoglFrameEvent event,
|
|
![](https://seccdn.libravatar.org/avatar/d13caac2dfd3ba477db2e3e0ad01ad443cf2cd9d160e6f3d7a7a82345ed68676?s=16&d=retro) |
11e24ea |
+ CoglFrameInfo *frame_info,
|
|
![](https://seccdn.libravatar.org/avatar/d13caac2dfd3ba477db2e3e0ad01ad443cf2cd9d160e6f3d7a7a82345ed68676?s=16&d=retro) |
11e24ea |
+ void *user_data)
|
|
![](https://seccdn.libravatar.org/avatar/d13caac2dfd3ba477db2e3e0ad01ad443cf2cd9d160e6f3d7a7a82345ed68676?s=16&d=retro) |
11e24ea |
+{
|
|
![](https://seccdn.libravatar.org/avatar/d13caac2dfd3ba477db2e3e0ad01ad443cf2cd9d160e6f3d7a7a82345ed68676?s=16&d=retro) |
11e24ea |
+ CoglFrameClosure **frame_closure = user_data;
|
|
![](https://seccdn.libravatar.org/avatar/d13caac2dfd3ba477db2e3e0ad01ad443cf2cd9d160e6f3d7a7a82345ed68676?s=16&d=retro) |
11e24ea |
+
|
|
![](https://seccdn.libravatar.org/avatar/d13caac2dfd3ba477db2e3e0ad01ad443cf2cd9d160e6f3d7a7a82345ed68676?s=16&d=retro) |
11e24ea |
+ MetaBackend *backend = meta_get_backend ();
|
|
![](https://seccdn.libravatar.org/avatar/d13caac2dfd3ba477db2e3e0ad01ad443cf2cd9d160e6f3d7a7a82345ed68676?s=16&d=retro) |
11e24ea |
+ MetaCursorRenderer *renderer = meta_backend_get_cursor_renderer (backend);
|
|
![](https://seccdn.libravatar.org/avatar/d13caac2dfd3ba477db2e3e0ad01ad443cf2cd9d160e6f3d7a7a82345ed68676?s=16&d=retro) |
11e24ea |
+ CoglOnscreen *cogl_onscreen;
|
|
![](https://seccdn.libravatar.org/avatar/d13caac2dfd3ba477db2e3e0ad01ad443cf2cd9d160e6f3d7a7a82345ed68676?s=16&d=retro) |
11e24ea |
+
|
|
![](https://seccdn.libravatar.org/avatar/d13caac2dfd3ba477db2e3e0ad01ad443cf2cd9d160e6f3d7a7a82345ed68676?s=16&d=retro) |
11e24ea |
+ if (event != COGL_FRAME_EVENT_COMPLETE)
|
|
![](https://seccdn.libravatar.org/avatar/d13caac2dfd3ba477db2e3e0ad01ad443cf2cd9d160e6f3d7a7a82345ed68676?s=16&d=retro) |
11e24ea |
+ return;
|
|
![](https://seccdn.libravatar.org/avatar/d13caac2dfd3ba477db2e3e0ad01ad443cf2cd9d160e6f3d7a7a82345ed68676?s=16&d=retro) |
11e24ea |
+
|
|
![](https://seccdn.libravatar.org/avatar/d13caac2dfd3ba477db2e3e0ad01ad443cf2cd9d160e6f3d7a7a82345ed68676?s=16&d=retro) |
11e24ea |
+ meta_cursor_renderer_native_force_update (META_CURSOR_RENDERER_NATIVE (renderer));
|
|
![](https://seccdn.libravatar.org/avatar/d13caac2dfd3ba477db2e3e0ad01ad443cf2cd9d160e6f3d7a7a82345ed68676?s=16&d=retro) |
11e24ea |
+
|
|
![](https://seccdn.libravatar.org/avatar/d13caac2dfd3ba477db2e3e0ad01ad443cf2cd9d160e6f3d7a7a82345ed68676?s=16&d=retro) |
11e24ea |
+ cogl_onscreen = COGL_ONSCREEN (cogl_get_draw_framebuffer ());
|
|
![](https://seccdn.libravatar.org/avatar/d13caac2dfd3ba477db2e3e0ad01ad443cf2cd9d160e6f3d7a7a82345ed68676?s=16&d=retro) |
11e24ea |
+ cogl_onscreen_remove_frame_callback (cogl_onscreen,
|
|
![](https://seccdn.libravatar.org/avatar/d13caac2dfd3ba477db2e3e0ad01ad443cf2cd9d160e6f3d7a7a82345ed68676?s=16&d=retro) |
11e24ea |
+ *frame_closure);
|
|
![](https://seccdn.libravatar.org/avatar/d13caac2dfd3ba477db2e3e0ad01ad443cf2cd9d160e6f3d7a7a82345ed68676?s=16&d=retro) |
11e24ea |
+
|
|
![](https://seccdn.libravatar.org/avatar/d13caac2dfd3ba477db2e3e0ad01ad443cf2cd9d160e6f3d7a7a82345ed68676?s=16&d=retro) |
11e24ea |
+ *frame_closure = NULL;
|
|
![](https://seccdn.libravatar.org/avatar/d13caac2dfd3ba477db2e3e0ad01ad443cf2cd9d160e6f3d7a7a82345ed68676?s=16&d=retro) |
11e24ea |
+}
|
|
![](https://seccdn.libravatar.org/avatar/d13caac2dfd3ba477db2e3e0ad01ad443cf2cd9d160e6f3d7a7a82345ed68676?s=16&d=retro) |
11e24ea |
+
|
|
![](https://seccdn.libravatar.org/avatar/d13caac2dfd3ba477db2e3e0ad01ad443cf2cd9d160e6f3d7a7a82345ed68676?s=16&d=retro) |
11e24ea |
+static void
|
|
![](https://seccdn.libravatar.org/avatar/d13caac2dfd3ba477db2e3e0ad01ad443cf2cd9d160e6f3d7a7a82345ed68676?s=16&d=retro) |
11e24ea |
session_unpause (void)
|
|
![](https://seccdn.libravatar.org/avatar/d13caac2dfd3ba477db2e3e0ad01ad443cf2cd9d160e6f3d7a7a82345ed68676?s=16&d=retro) |
11e24ea |
{
|
|
![](https://seccdn.libravatar.org/avatar/d13caac2dfd3ba477db2e3e0ad01ad443cf2cd9d160e6f3d7a7a82345ed68676?s=16&d=retro) |
11e24ea |
ClutterBackend *clutter_backend;
|
|
Florian Müllner |
4e32261 |
@@ -120,6 +144,8 @@ session_unpause (void)
|
|
![](https://seccdn.libravatar.org/avatar/d13caac2dfd3ba477db2e3e0ad01ad443cf2cd9d160e6f3d7a7a82345ed68676?s=16&d=retro) |
11e24ea |
MetaBackend *backend = meta_get_backend ();
|
|
![](https://seccdn.libravatar.org/avatar/d13caac2dfd3ba477db2e3e0ad01ad443cf2cd9d160e6f3d7a7a82345ed68676?s=16&d=retro) |
11e24ea |
MetaCursorRenderer *renderer = meta_backend_get_cursor_renderer (backend);
|
|
![](https://seccdn.libravatar.org/avatar/d13caac2dfd3ba477db2e3e0ad01ad443cf2cd9d160e6f3d7a7a82345ed68676?s=16&d=retro) |
11e24ea |
ClutterActor *stage = meta_backend_get_stage (backend);
|
|
![](https://seccdn.libravatar.org/avatar/d13caac2dfd3ba477db2e3e0ad01ad443cf2cd9d160e6f3d7a7a82345ed68676?s=16&d=retro) |
11e24ea |
+ CoglOnscreen *cogl_onscreen;
|
|
![](https://seccdn.libravatar.org/avatar/d13caac2dfd3ba477db2e3e0ad01ad443cf2cd9d160e6f3d7a7a82345ed68676?s=16&d=retro) |
11e24ea |
+ static CoglFrameClosure *frame_closure = NULL;
|
|
![](https://seccdn.libravatar.org/avatar/d13caac2dfd3ba477db2e3e0ad01ad443cf2cd9d160e6f3d7a7a82345ed68676?s=16&d=retro) |
11e24ea |
|
|
![](https://seccdn.libravatar.org/avatar/d13caac2dfd3ba477db2e3e0ad01ad443cf2cd9d160e6f3d7a7a82345ed68676?s=16&d=retro) |
11e24ea |
/* When we mode-switch back, we need to immediately queue a redraw
|
|
![](https://seccdn.libravatar.org/avatar/d13caac2dfd3ba477db2e3e0ad01ad443cf2cd9d160e6f3d7a7a82345ed68676?s=16&d=retro) |
11e24ea |
* in case nothing else queued one for us, and force the cursor to
|
|
Florian Müllner |
4e32261 |
@@ -127,6 +153,17 @@ session_unpause (void)
|
|
![](https://seccdn.libravatar.org/avatar/d13caac2dfd3ba477db2e3e0ad01ad443cf2cd9d160e6f3d7a7a82345ed68676?s=16&d=retro) |
11e24ea |
|
|
![](https://seccdn.libravatar.org/avatar/d13caac2dfd3ba477db2e3e0ad01ad443cf2cd9d160e6f3d7a7a82345ed68676?s=16&d=retro) |
11e24ea |
clutter_actor_queue_redraw (stage);
|
|
![](https://seccdn.libravatar.org/avatar/d13caac2dfd3ba477db2e3e0ad01ad443cf2cd9d160e6f3d7a7a82345ed68676?s=16&d=retro) |
11e24ea |
meta_cursor_renderer_native_force_update (META_CURSOR_RENDERER_NATIVE (renderer));
|
|
![](https://seccdn.libravatar.org/avatar/d13caac2dfd3ba477db2e3e0ad01ad443cf2cd9d160e6f3d7a7a82345ed68676?s=16&d=retro) |
11e24ea |
+
|
|
![](https://seccdn.libravatar.org/avatar/d13caac2dfd3ba477db2e3e0ad01ad443cf2cd9d160e6f3d7a7a82345ed68676?s=16&d=retro) |
11e24ea |
+ cogl_onscreen = COGL_ONSCREEN (cogl_get_draw_framebuffer ());
|
|
![](https://seccdn.libravatar.org/avatar/d13caac2dfd3ba477db2e3e0ad01ad443cf2cd9d160e6f3d7a7a82345ed68676?s=16&d=retro) |
11e24ea |
+
|
|
![](https://seccdn.libravatar.org/avatar/d13caac2dfd3ba477db2e3e0ad01ad443cf2cd9d160e6f3d7a7a82345ed68676?s=16&d=retro) |
11e24ea |
+ if (frame_closure)
|
|
![](https://seccdn.libravatar.org/avatar/d13caac2dfd3ba477db2e3e0ad01ad443cf2cd9d160e6f3d7a7a82345ed68676?s=16&d=retro) |
11e24ea |
+ cogl_onscreen_remove_frame_callback (cogl_onscreen, frame_closure);
|
|
![](https://seccdn.libravatar.org/avatar/d13caac2dfd3ba477db2e3e0ad01ad443cf2cd9d160e6f3d7a7a82345ed68676?s=16&d=retro) |
11e24ea |
+
|
|
![](https://seccdn.libravatar.org/avatar/d13caac2dfd3ba477db2e3e0ad01ad443cf2cd9d160e6f3d7a7a82345ed68676?s=16&d=retro) |
11e24ea |
+ frame_closure = cogl_onscreen_add_frame_callback (cogl_onscreen,
|
|
![](https://seccdn.libravatar.org/avatar/d13caac2dfd3ba477db2e3e0ad01ad443cf2cd9d160e6f3d7a7a82345ed68676?s=16&d=retro) |
11e24ea |
+ frame_callback,
|
|
![](https://seccdn.libravatar.org/avatar/d13caac2dfd3ba477db2e3e0ad01ad443cf2cd9d160e6f3d7a7a82345ed68676?s=16&d=retro) |
11e24ea |
+ &frame_closure,
|
|
![](https://seccdn.libravatar.org/avatar/d13caac2dfd3ba477db2e3e0ad01ad443cf2cd9d160e6f3d7a7a82345ed68676?s=16&d=retro) |
11e24ea |
+ NULL);
|
|
![](https://seccdn.libravatar.org/avatar/d13caac2dfd3ba477db2e3e0ad01ad443cf2cd9d160e6f3d7a7a82345ed68676?s=16&d=retro) |
11e24ea |
+
|
|
![](https://seccdn.libravatar.org/avatar/d13caac2dfd3ba477db2e3e0ad01ad443cf2cd9d160e6f3d7a7a82345ed68676?s=16&d=retro) |
11e24ea |
meta_idle_monitor_native_reset_idletime (meta_idle_monitor_get_core ());
|
|
![](https://seccdn.libravatar.org/avatar/d13caac2dfd3ba477db2e3e0ad01ad443cf2cd9d160e6f3d7a7a82345ed68676?s=16&d=retro) |
11e24ea |
}
|
|
![](https://seccdn.libravatar.org/avatar/d13caac2dfd3ba477db2e3e0ad01ad443cf2cd9d160e6f3d7a7a82345ed68676?s=16&d=retro) |
11e24ea |
}
|
|
![](https://seccdn.libravatar.org/avatar/d13caac2dfd3ba477db2e3e0ad01ad443cf2cd9d160e6f3d7a7a82345ed68676?s=16&d=retro) |
341cacd |
diff --git a/src/backends/native/meta-monitor-manager-kms.c b/src/backends/native/meta-monitor-manager-kms.c
|
|
Florian Müllner |
4e32261 |
index e1a6f5f..af92cd1 100644
|
|
![](https://seccdn.libravatar.org/avatar/d13caac2dfd3ba477db2e3e0ad01ad443cf2cd9d160e6f3d7a7a82345ed68676?s=16&d=retro) |
341cacd |
--- a/src/backends/native/meta-monitor-manager-kms.c
|
|
![](https://seccdn.libravatar.org/avatar/d13caac2dfd3ba477db2e3e0ad01ad443cf2cd9d160e6f3d7a7a82345ed68676?s=16&d=retro) |
341cacd |
+++ b/src/backends/native/meta-monitor-manager-kms.c
|
|
Florian Müllner |
4e32261 |
@@ -25,6 +25,8 @@
|
|
![](https://seccdn.libravatar.org/avatar/d13caac2dfd3ba477db2e3e0ad01ad443cf2cd9d160e6f3d7a7a82345ed68676?s=16&d=retro) |
341cacd |
|
|
![](https://seccdn.libravatar.org/avatar/d13caac2dfd3ba477db2e3e0ad01ad443cf2cd9d160e6f3d7a7a82345ed68676?s=16&d=retro) |
341cacd |
#include "meta-monitor-manager-kms.h"
|
|
![](https://seccdn.libravatar.org/avatar/d13caac2dfd3ba477db2e3e0ad01ad443cf2cd9d160e6f3d7a7a82345ed68676?s=16&d=retro) |
341cacd |
#include "meta-monitor-config.h"
|
|
![](https://seccdn.libravatar.org/avatar/d13caac2dfd3ba477db2e3e0ad01ad443cf2cd9d160e6f3d7a7a82345ed68676?s=16&d=retro) |
341cacd |
+#include "backends/meta-backend-private.h"
|
|
![](https://seccdn.libravatar.org/avatar/d13caac2dfd3ba477db2e3e0ad01ad443cf2cd9d160e6f3d7a7a82345ed68676?s=16&d=retro) |
341cacd |
+#include "meta-cursor-renderer-native.h"
|
|
![](https://seccdn.libravatar.org/avatar/d13caac2dfd3ba477db2e3e0ad01ad443cf2cd9d160e6f3d7a7a82345ed68676?s=16&d=retro) |
341cacd |
|
|
![](https://seccdn.libravatar.org/avatar/d13caac2dfd3ba477db2e3e0ad01ad443cf2cd9d160e6f3d7a7a82345ed68676?s=16&d=retro) |
341cacd |
#include <string.h>
|
|
![](https://seccdn.libravatar.org/avatar/d13caac2dfd3ba477db2e3e0ad01ad443cf2cd9d160e6f3d7a7a82345ed68676?s=16&d=retro) |
341cacd |
#include <stdlib.h>
|
|
Florian Müllner |
4e32261 |
@@ -82,6 +84,9 @@ struct _MetaMonitorManagerKms
|
|
![](https://seccdn.libravatar.org/avatar/d13caac2dfd3ba477db2e3e0ad01ad443cf2cd9d160e6f3d7a7a82345ed68676?s=16&d=retro) |
341cacd |
drmModeConnector **connectors;
|
|
![](https://seccdn.libravatar.org/avatar/d13caac2dfd3ba477db2e3e0ad01ad443cf2cd9d160e6f3d7a7a82345ed68676?s=16&d=retro) |
341cacd |
unsigned int n_connectors;
|
|
![](https://seccdn.libravatar.org/avatar/d13caac2dfd3ba477db2e3e0ad01ad443cf2cd9d160e6f3d7a7a82345ed68676?s=16&d=retro) |
341cacd |
|
|
![](https://seccdn.libravatar.org/avatar/d13caac2dfd3ba477db2e3e0ad01ad443cf2cd9d160e6f3d7a7a82345ed68676?s=16&d=retro) |
341cacd |
+ /* used to find out when configuration has been applied */
|
|
![](https://seccdn.libravatar.org/avatar/d13caac2dfd3ba477db2e3e0ad01ad443cf2cd9d160e6f3d7a7a82345ed68676?s=16&d=retro) |
341cacd |
+ CoglFrameClosure *frame_closure;
|
|
![](https://seccdn.libravatar.org/avatar/d13caac2dfd3ba477db2e3e0ad01ad443cf2cd9d160e6f3d7a7a82345ed68676?s=16&d=retro) |
341cacd |
+
|
|
![](https://seccdn.libravatar.org/avatar/d13caac2dfd3ba477db2e3e0ad01ad443cf2cd9d160e6f3d7a7a82345ed68676?s=16&d=retro) |
341cacd |
GUdevClient *udev;
|
|
![](https://seccdn.libravatar.org/avatar/d13caac2dfd3ba477db2e3e0ad01ad443cf2cd9d160e6f3d7a7a82345ed68676?s=16&d=retro) |
341cacd |
|
|
![](https://seccdn.libravatar.org/avatar/d13caac2dfd3ba477db2e3e0ad01ad443cf2cd9d160e6f3d7a7a82345ed68676?s=16&d=retro) |
341cacd |
GSettings *desktop_settings;
|
|
Florian Müllner |
4e32261 |
@@ -1053,6 +1058,29 @@ set_underscan (MetaMonitorManagerKms *manager_kms,
|
|
![](https://seccdn.libravatar.org/avatar/d13caac2dfd3ba477db2e3e0ad01ad443cf2cd9d160e6f3d7a7a82345ed68676?s=16&d=retro) |
341cacd |
}
|
|
![](https://seccdn.libravatar.org/avatar/d13caac2dfd3ba477db2e3e0ad01ad443cf2cd9d160e6f3d7a7a82345ed68676?s=16&d=retro) |
341cacd |
|
|
![](https://seccdn.libravatar.org/avatar/d13caac2dfd3ba477db2e3e0ad01ad443cf2cd9d160e6f3d7a7a82345ed68676?s=16&d=retro) |
341cacd |
static void
|
|
![](https://seccdn.libravatar.org/avatar/d13caac2dfd3ba477db2e3e0ad01ad443cf2cd9d160e6f3d7a7a82345ed68676?s=16&d=retro) |
341cacd |
+frame_callback (CoglOnscreen *onscreen,
|
|
![](https://seccdn.libravatar.org/avatar/d13caac2dfd3ba477db2e3e0ad01ad443cf2cd9d160e6f3d7a7a82345ed68676?s=16&d=retro) |
341cacd |
+ CoglFrameEvent event,
|
|
![](https://seccdn.libravatar.org/avatar/d13caac2dfd3ba477db2e3e0ad01ad443cf2cd9d160e6f3d7a7a82345ed68676?s=16&d=retro) |
341cacd |
+ CoglFrameInfo *frame_info,
|
|
![](https://seccdn.libravatar.org/avatar/d13caac2dfd3ba477db2e3e0ad01ad443cf2cd9d160e6f3d7a7a82345ed68676?s=16&d=retro) |
341cacd |
+ void *user_data)
|
|
![](https://seccdn.libravatar.org/avatar/d13caac2dfd3ba477db2e3e0ad01ad443cf2cd9d160e6f3d7a7a82345ed68676?s=16&d=retro) |
341cacd |
+{
|
|
![](https://seccdn.libravatar.org/avatar/d13caac2dfd3ba477db2e3e0ad01ad443cf2cd9d160e6f3d7a7a82345ed68676?s=16&d=retro) |
341cacd |
+ MetaMonitorManagerKms *manager_kms = user_data;
|
|
![](https://seccdn.libravatar.org/avatar/d13caac2dfd3ba477db2e3e0ad01ad443cf2cd9d160e6f3d7a7a82345ed68676?s=16&d=retro) |
341cacd |
+ MetaBackend *backend = meta_get_backend ();
|
|
![](https://seccdn.libravatar.org/avatar/d13caac2dfd3ba477db2e3e0ad01ad443cf2cd9d160e6f3d7a7a82345ed68676?s=16&d=retro) |
341cacd |
+ MetaCursorRenderer *renderer = meta_backend_get_cursor_renderer (backend);
|
|
![](https://seccdn.libravatar.org/avatar/d13caac2dfd3ba477db2e3e0ad01ad443cf2cd9d160e6f3d7a7a82345ed68676?s=16&d=retro) |
341cacd |
+ CoglOnscreen *cogl_onscreen;
|
|
![](https://seccdn.libravatar.org/avatar/d13caac2dfd3ba477db2e3e0ad01ad443cf2cd9d160e6f3d7a7a82345ed68676?s=16&d=retro) |
341cacd |
+
|
|
![](https://seccdn.libravatar.org/avatar/d13caac2dfd3ba477db2e3e0ad01ad443cf2cd9d160e6f3d7a7a82345ed68676?s=16&d=retro) |
341cacd |
+ if (event != COGL_FRAME_EVENT_COMPLETE)
|
|
![](https://seccdn.libravatar.org/avatar/d13caac2dfd3ba477db2e3e0ad01ad443cf2cd9d160e6f3d7a7a82345ed68676?s=16&d=retro) |
341cacd |
+ return;
|
|
![](https://seccdn.libravatar.org/avatar/d13caac2dfd3ba477db2e3e0ad01ad443cf2cd9d160e6f3d7a7a82345ed68676?s=16&d=retro) |
341cacd |
+
|
|
![](https://seccdn.libravatar.org/avatar/d13caac2dfd3ba477db2e3e0ad01ad443cf2cd9d160e6f3d7a7a82345ed68676?s=16&d=retro) |
341cacd |
+ meta_cursor_renderer_native_force_update (META_CURSOR_RENDERER_NATIVE (renderer));
|
|
![](https://seccdn.libravatar.org/avatar/d13caac2dfd3ba477db2e3e0ad01ad443cf2cd9d160e6f3d7a7a82345ed68676?s=16&d=retro) |
341cacd |
+
|
|
![](https://seccdn.libravatar.org/avatar/d13caac2dfd3ba477db2e3e0ad01ad443cf2cd9d160e6f3d7a7a82345ed68676?s=16&d=retro) |
341cacd |
+ cogl_onscreen = COGL_ONSCREEN (cogl_get_draw_framebuffer ());
|
|
![](https://seccdn.libravatar.org/avatar/d13caac2dfd3ba477db2e3e0ad01ad443cf2cd9d160e6f3d7a7a82345ed68676?s=16&d=retro) |
341cacd |
+ cogl_onscreen_remove_frame_callback (cogl_onscreen,
|
|
![](https://seccdn.libravatar.org/avatar/d13caac2dfd3ba477db2e3e0ad01ad443cf2cd9d160e6f3d7a7a82345ed68676?s=16&d=retro) |
341cacd |
+ manager_kms->frame_closure);
|
|
![](https://seccdn.libravatar.org/avatar/d13caac2dfd3ba477db2e3e0ad01ad443cf2cd9d160e6f3d7a7a82345ed68676?s=16&d=retro) |
341cacd |
+
|
|
![](https://seccdn.libravatar.org/avatar/d13caac2dfd3ba477db2e3e0ad01ad443cf2cd9d160e6f3d7a7a82345ed68676?s=16&d=retro) |
341cacd |
+ manager_kms->frame_closure = NULL;
|
|
![](https://seccdn.libravatar.org/avatar/d13caac2dfd3ba477db2e3e0ad01ad443cf2cd9d160e6f3d7a7a82345ed68676?s=16&d=retro) |
341cacd |
+}
|
|
![](https://seccdn.libravatar.org/avatar/d13caac2dfd3ba477db2e3e0ad01ad443cf2cd9d160e6f3d7a7a82345ed68676?s=16&d=retro) |
341cacd |
+
|
|
![](https://seccdn.libravatar.org/avatar/d13caac2dfd3ba477db2e3e0ad01ad443cf2cd9d160e6f3d7a7a82345ed68676?s=16&d=retro) |
341cacd |
+static void
|
|
![](https://seccdn.libravatar.org/avatar/d13caac2dfd3ba477db2e3e0ad01ad443cf2cd9d160e6f3d7a7a82345ed68676?s=16&d=retro) |
341cacd |
meta_monitor_manager_kms_apply_configuration (MetaMonitorManager *manager,
|
|
![](https://seccdn.libravatar.org/avatar/d13caac2dfd3ba477db2e3e0ad01ad443cf2cd9d160e6f3d7a7a82345ed68676?s=16&d=retro) |
341cacd |
MetaCRTCInfo **crtcs,
|
|
![](https://seccdn.libravatar.org/avatar/d13caac2dfd3ba477db2e3e0ad01ad443cf2cd9d160e6f3d7a7a82345ed68676?s=16&d=retro) |
341cacd |
unsigned int n_crtcs,
|
|
Florian Müllner |
4e32261 |
@@ -1063,6 +1091,7 @@ meta_monitor_manager_kms_apply_configuration (MetaMonitorManager *manager,
|
|
![](https://seccdn.libravatar.org/avatar/d13caac2dfd3ba477db2e3e0ad01ad443cf2cd9d160e6f3d7a7a82345ed68676?s=16&d=retro) |
341cacd |
ClutterBackend *backend;
|
|
![](https://seccdn.libravatar.org/avatar/d13caac2dfd3ba477db2e3e0ad01ad443cf2cd9d160e6f3d7a7a82345ed68676?s=16&d=retro) |
341cacd |
CoglContext *cogl_context;
|
|
![](https://seccdn.libravatar.org/avatar/d13caac2dfd3ba477db2e3e0ad01ad443cf2cd9d160e6f3d7a7a82345ed68676?s=16&d=retro) |
341cacd |
CoglDisplay *cogl_display;
|
|
![](https://seccdn.libravatar.org/avatar/d13caac2dfd3ba477db2e3e0ad01ad443cf2cd9d160e6f3d7a7a82345ed68676?s=16&d=retro) |
341cacd |
+ CoglOnscreen *cogl_onscreen;
|
|
![](https://seccdn.libravatar.org/avatar/d13caac2dfd3ba477db2e3e0ad01ad443cf2cd9d160e6f3d7a7a82345ed68676?s=16&d=retro) |
341cacd |
unsigned i;
|
|
![](https://seccdn.libravatar.org/avatar/d13caac2dfd3ba477db2e3e0ad01ad443cf2cd9d160e6f3d7a7a82345ed68676?s=16&d=retro) |
341cacd |
GPtrArray *cogl_crtcs;
|
|
![](https://seccdn.libravatar.org/avatar/d13caac2dfd3ba477db2e3e0ad01ad443cf2cd9d160e6f3d7a7a82345ed68676?s=16&d=retro) |
341cacd |
int screen_width, screen_height;
|
|
Florian Müllner |
4e32261 |
@@ -1206,6 +1235,15 @@ meta_monitor_manager_kms_apply_configuration (MetaMonitorManager *manager,
|
|
![](https://seccdn.libravatar.org/avatar/d13caac2dfd3ba477db2e3e0ad01ad443cf2cd9d160e6f3d7a7a82345ed68676?s=16&d=retro) |
341cacd |
return;
|
|
![](https://seccdn.libravatar.org/avatar/d13caac2dfd3ba477db2e3e0ad01ad443cf2cd9d160e6f3d7a7a82345ed68676?s=16&d=retro) |
341cacd |
}
|
|
![](https://seccdn.libravatar.org/avatar/d13caac2dfd3ba477db2e3e0ad01ad443cf2cd9d160e6f3d7a7a82345ed68676?s=16&d=retro) |
341cacd |
|
|
![](https://seccdn.libravatar.org/avatar/d13caac2dfd3ba477db2e3e0ad01ad443cf2cd9d160e6f3d7a7a82345ed68676?s=16&d=retro) |
341cacd |
+ cogl_onscreen = COGL_ONSCREEN (cogl_get_draw_framebuffer ());
|
|
![](https://seccdn.libravatar.org/avatar/d13caac2dfd3ba477db2e3e0ad01ad443cf2cd9d160e6f3d7a7a82345ed68676?s=16&d=retro) |
341cacd |
+ if (manager_kms->frame_closure)
|
|
![](https://seccdn.libravatar.org/avatar/d13caac2dfd3ba477db2e3e0ad01ad443cf2cd9d160e6f3d7a7a82345ed68676?s=16&d=retro) |
341cacd |
+ cogl_onscreen_remove_frame_callback (cogl_onscreen,
|
|
![](https://seccdn.libravatar.org/avatar/d13caac2dfd3ba477db2e3e0ad01ad443cf2cd9d160e6f3d7a7a82345ed68676?s=16&d=retro) |
341cacd |
+ manager_kms->frame_closure);
|
|
![](https://seccdn.libravatar.org/avatar/d13caac2dfd3ba477db2e3e0ad01ad443cf2cd9d160e6f3d7a7a82345ed68676?s=16&d=retro) |
341cacd |
+ manager_kms->frame_closure = cogl_onscreen_add_frame_callback (cogl_onscreen,
|
|
![](https://seccdn.libravatar.org/avatar/d13caac2dfd3ba477db2e3e0ad01ad443cf2cd9d160e6f3d7a7a82345ed68676?s=16&d=retro) |
341cacd |
+ frame_callback,
|
|
![](https://seccdn.libravatar.org/avatar/d13caac2dfd3ba477db2e3e0ad01ad443cf2cd9d160e6f3d7a7a82345ed68676?s=16&d=retro) |
341cacd |
+ manager,
|
|
![](https://seccdn.libravatar.org/avatar/d13caac2dfd3ba477db2e3e0ad01ad443cf2cd9d160e6f3d7a7a82345ed68676?s=16&d=retro) |
341cacd |
+ NULL);
|
|
![](https://seccdn.libravatar.org/avatar/d13caac2dfd3ba477db2e3e0ad01ad443cf2cd9d160e6f3d7a7a82345ed68676?s=16&d=retro) |
341cacd |
+
|
|
![](https://seccdn.libravatar.org/avatar/d13caac2dfd3ba477db2e3e0ad01ad443cf2cd9d160e6f3d7a7a82345ed68676?s=16&d=retro) |
341cacd |
for (i = 0; i < n_outputs; i++)
|
|
![](https://seccdn.libravatar.org/avatar/d13caac2dfd3ba477db2e3e0ad01ad443cf2cd9d160e6f3d7a7a82345ed68676?s=16&d=retro) |
341cacd |
{
|
|
![](https://seccdn.libravatar.org/avatar/d13caac2dfd3ba477db2e3e0ad01ad443cf2cd9d160e6f3d7a7a82345ed68676?s=16&d=retro) |
341cacd |
MetaOutputInfo *output_info = outputs[i];
|
|
![](https://seccdn.libravatar.org/avatar/d13caac2dfd3ba477db2e3e0ad01ad443cf2cd9d160e6f3d7a7a82345ed68676?s=16&d=retro) |
341cacd |
--
|
|
Florian Müllner |
4e32261 |
2.7.0
|
|
![](https://seccdn.libravatar.org/avatar/d13caac2dfd3ba477db2e3e0ad01ad443cf2cd9d160e6f3d7a7a82345ed68676?s=16&d=retro) |
341cacd |
|