summaryrefslogtreecommitdiffstats
path: root/server/display-channel.c
diff options
context:
space:
mode:
Diffstat (limited to 'server/display-channel.c')
-rw-r--r--server/display-channel.c45
1 files changed, 45 insertions, 0 deletions
diff --git a/server/display-channel.c b/server/display-channel.c
index 00be6654..c7cb3dff 100644
--- a/server/display-channel.c
+++ b/server/display-channel.c
@@ -36,3 +36,48 @@ DisplayChannelClient *dcc_new(DisplayChannel *display,
return dcc;
}
+
+MonitorsConfig* monitors_config_ref(MonitorsConfig *monitors_config)
+{
+ monitors_config->refs++;
+
+ return monitors_config;
+}
+
+void monitors_config_unref(MonitorsConfig *monitors_config)
+{
+ if (!monitors_config) {
+ return;
+ }
+ if (--monitors_config->refs != 0) {
+ return;
+ }
+
+ spice_debug("freeing monitors config");
+ free(monitors_config);
+}
+
+static void monitors_config_debug(MonitorsConfig *mc)
+{
+ int i;
+
+ spice_debug("monitors config count:%d max:%d", mc->count, mc->max_allowed);
+ for (i = 0; i < mc->count; i++)
+ spice_debug("+%d+%d %dx%d",
+ mc->heads[i].x, mc->heads[i].y,
+ mc->heads[i].width, mc->heads[i].height);
+}
+
+MonitorsConfig* monitors_config_new(QXLHead *heads, ssize_t nheads, ssize_t max)
+{
+ MonitorsConfig *mc;
+
+ mc = spice_malloc(sizeof(MonitorsConfig) + nheads * sizeof(QXLHead));
+ mc->refs = 1;
+ mc->count = nheads;
+ mc->max_allowed = max;
+ memcpy(mc->heads, heads, nheads * sizeof(QXLHead));
+ monitors_config_debug(mc);
+
+ return mc;
+}