[gnome-flashback] display-config: add method to get a monitor from an output
- From: Alberts MuktupÄvels <muktupavels src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-flashback] display-config: add method to get a monitor from an output
- Date: Mon, 30 Mar 2015 20:08:38 +0000 (UTC)
commit 433be96f2fb48663e70034bdbed4f63a2e421bbd
Author: Alberts MuktupÄvels <alberts muktupavels gmail com>
Date: Mon Mar 30 14:01:35 2015 +0300
display-config: add method to get a monitor from an output
.../libdisplay-config/flashback-monitor-manager.c | 32 ++++++++++++++++++++
.../libdisplay-config/flashback-monitor-manager.h | 3 ++
2 files changed, 35 insertions(+), 0 deletions(-)
---
diff --git a/gnome-flashback/libdisplay-config/flashback-monitor-manager.c
b/gnome-flashback/libdisplay-config/flashback-monitor-manager.c
index c5064dd..2803c95 100644
--- a/gnome-flashback/libdisplay-config/flashback-monitor-manager.c
+++ b/gnome-flashback/libdisplay-config/flashback-monitor-manager.c
@@ -57,6 +57,17 @@ struct _FlashbackMonitorManagerPrivate
G_DEFINE_TYPE_WITH_PRIVATE (FlashbackMonitorManager, flashback_monitor_manager, G_TYPE_OBJECT)
+static gboolean
+rectangle_contains_rect (const GdkRectangle *outer_rect,
+ const GdkRectangle *inner_rect)
+{
+ return
+ inner_rect->x >= outer_rect->x &&
+ inner_rect->y >= outer_rect->y &&
+ inner_rect->x + inner_rect->width <= outer_rect->x + outer_rect->width &&
+ inner_rect->y + inner_rect->height <= outer_rect->y + outer_rect->height;
+}
+
static Rotation
meta_monitor_transform_to_xrandr (MetaMonitorTransform transform)
{
@@ -1501,3 +1512,24 @@ flashback_monitor_manager_get_screen_limits (FlashbackMonitorManager *manager,
*width = manager->max_screen_width;
*height = manager->max_screen_height;
}
+
+gint
+flashback_monitor_manager_get_monitor_for_output (FlashbackMonitorManager *manager,
+ guint id)
+{
+ MetaOutput *output;
+ guint i;
+
+ g_return_val_if_fail (FLASHBACK_IS_MONITOR_MANAGER (manager), -1);
+ g_return_val_if_fail (id < manager->n_outputs, -1);
+
+ output = &manager->outputs[id];
+ if (!output || !output->crtc)
+ return -1;
+
+ for (i = 0; i < manager->n_monitor_infos; i++)
+ if (rectangle_contains_rect (&manager->monitor_infos[i].rect, &output->crtc->rect))
+ return i;
+
+ return -1;
+}
diff --git a/gnome-flashback/libdisplay-config/flashback-monitor-manager.h
b/gnome-flashback/libdisplay-config/flashback-monitor-manager.h
index 41c3596..1a9ddd3 100644
--- a/gnome-flashback/libdisplay-config/flashback-monitor-manager.h
+++ b/gnome-flashback/libdisplay-config/flashback-monitor-manager.h
@@ -313,6 +313,9 @@ void flashback_monitor_manager_get_screen_limits (Flashbac
int *width,
int *height);
+gint flashback_monitor_manager_get_monitor_for_output (FlashbackMonitorManager *manager,
+ guint id);
+
G_END_DECLS
#endif
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]