[gnome-flashback] monitor-manager: add get_monitor_for_output
- From: Alberts Muktupāvels <muktupavels src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-flashback] monitor-manager: add get_monitor_for_output
- Date: Thu, 28 Sep 2017 14:20:46 +0000 (UTC)
commit 9f83630e581489d9435e71fa7e8c78d4f780496c
Author: Alberts Muktupāvels <alberts muktupavels gmail com>
Date: Thu Sep 28 15:17:15 2017 +0300
monitor-manager: add get_monitor_for_output
backends/gf-monitor-manager.c | 25 +++++++++++++++++++++++++
backends/gf-monitor-manager.h | 3 +++
backends/gf-rectangle.c | 10 ++++++++++
backends/gf-rectangle.h | 3 +++
4 files changed, 41 insertions(+), 0 deletions(-)
---
diff --git a/backends/gf-monitor-manager.c b/backends/gf-monitor-manager.c
index ffebbcb..e566e6c 100644
--- a/backends/gf-monitor-manager.c
+++ b/backends/gf-monitor-manager.c
@@ -2524,6 +2524,31 @@ gf_monitor_manager_clear_crtc (GfCrtc *crtc)
memset (crtc, 0, sizeof (*crtc));
}
+gint
+gf_monitor_manager_get_monitor_for_output (GfMonitorManager *manager,
+ guint id)
+{
+ GfOutput *output;
+ GList *l;
+
+ g_return_val_if_fail (GF_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 (l = manager->logical_monitors; l; l = l->next)
+ {
+ GfLogicalMonitor *logical_monitor = l->data;
+
+ if (gf_rectangle_contains_rect (&logical_monitor->rect, &output->crtc->rect))
+ return logical_monitor->number;
+ }
+
+ return -1;
+}
+
gboolean
gf_monitor_manager_get_is_builtin_display_on (GfMonitorManager *manager)
{
diff --git a/backends/gf-monitor-manager.h b/backends/gf-monitor-manager.h
index 2518dac..c7ed394 100644
--- a/backends/gf-monitor-manager.h
+++ b/backends/gf-monitor-manager.h
@@ -37,6 +37,9 @@ typedef enum
typedef struct _GfMonitorManager GfMonitorManager;
+gint gf_monitor_manager_get_monitor_for_output (GfMonitorManager
*manager,
+ guint
id);
+
gboolean gf_monitor_manager_get_is_builtin_display_on (GfMonitorManager
*manager);
GfMonitorSwitchConfigType gf_monitor_manager_get_switch_config (GfMonitorManager
*manager);
diff --git a/backends/gf-rectangle.c b/backends/gf-rectangle.c
index 06ebbba..7df8f2d 100644
--- a/backends/gf-rectangle.c
+++ b/backends/gf-rectangle.c
@@ -62,6 +62,16 @@ gf_rectangle_horiz_overlap (const GfRectangle *rect1,
}
gboolean
+gf_rectangle_contains_rect (const GfRectangle *outer_rect,
+ const GfRectangle *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;
+}
+
+gboolean
gf_rectangle_overlaps_with_region (const GList *spanning_rects,
const GfRectangle *rect)
{
diff --git a/backends/gf-rectangle.h b/backends/gf-rectangle.h
index f587495..03ff228 100644
--- a/backends/gf-rectangle.h
+++ b/backends/gf-rectangle.h
@@ -43,6 +43,9 @@ gboolean gf_rectangle_vert_overlap (const GfRectangle *rect1,
gboolean gf_rectangle_horiz_overlap (const GfRectangle *rect1,
const GfRectangle *rect2);
+gboolean gf_rectangle_contains_rect (const GfRectangle *outer_rect,
+ const GfRectangle *inner_rect);
+
G_END_DECLS
#endif
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]