From 04c6cc145e9e8365acdf4ec5d7f1776bbb20bf44 Mon Sep 17 00:00:00 2001 From: "Enrico Weigelt, metux IT consult" Date: Tue, 13 Aug 2024 20:16:09 +0200 Subject: [PATCH] Xnest: fetch root visual ID from screen data Signed-off-by: Enrico Weigelt, metux IT consult --- hw/xnest/Screen.c | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/hw/xnest/Screen.c b/hw/xnest/Screen.c index 705d91af0..37c9f3109 100644 --- a/hw/xnest/Screen.c +++ b/hw/xnest/Screen.c @@ -174,6 +174,7 @@ xnestOpenScreen(ScreenPtr pScreen, int argc, char *argv[]) depths[0].vids = calloc(MAXVISUALSPERDEPTH, sizeof(VisualID)); numDepths = 1; + int found_default_visual = 0; for (i = 0; i < xnestNumVisuals; i++) { visuals[numVisuals].class = xnestVisuals[i].class; visuals[numVisuals].bitsPerRGBValue = xnestVisuals[i].bits_per_rgb; @@ -228,6 +229,24 @@ xnestOpenScreen(ScreenPtr pScreen, int argc, char *argv[]) visuals[numVisuals].vid; depths[depthIndex].numVids++; + if (xnestUserDefaultClass || xnestUserDefaultDepth) { + if ((!xnestDefaultClass || visuals[numVisuals].class == xnestDefaultClass) && + (!xnestDefaultDepth || visuals[numVisuals].nplanes == xnestDefaultDepth)) + { + defaultVisual = visuals[numVisuals].vid; + rootDepth = visuals[numVisuals].nplanes; + found_default_visual = 1; + } + } + else + { + VisualID visual_id = xnestUpstreamInfo.screenInfo->root_visual; + if (visual_id == xnestVisuals[i].visualid) { + defaultVisual = visuals[numVisuals].vid; + rootDepth = visuals[numVisuals].nplanes; + found_default_visual = 1; + } + } numVisuals++; } visuals = reallocarray(visuals, numVisuals, sizeof(VisualRec));