From 780aa87683f13f77c0d7bcde5a289c5c1df85bc2 Mon Sep 17 00:00:00 2001 From: roytam1 Date: Mon, 18 Aug 2025 10:28:54 +0800 Subject: [PATCH] import from UXP: Bug 1875345 - Report 24 instead of 32 as the colorDepth (and pixelDepth) on Linux (assuming 8 of 32 bits are for the alpha channel). (e3de626c) --- widget/gtk/nsScreenGtk.cpp | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/widget/gtk/nsScreenGtk.cpp b/widget/gtk/nsScreenGtk.cpp index 61e6605b7..2bd984aca 100644 --- a/widget/gtk/nsScreenGtk.cpp +++ b/widget/gtk/nsScreenGtk.cpp @@ -97,17 +97,21 @@ NS_IMETHODIMP nsScreenGtk :: GetPixelDepth(int32_t *aPixelDepth) { GdkVisual * visual = gdk_screen_get_system_visual(gdk_screen_get_default()); - *aPixelDepth = gdk_visual_get_depth(visual); - + uint32_t pixelDepth = gdk_visual_get_depth(visual); + if (pixelDepth == 32) { + // If a device reports 32 bits per pixel, it's still only using 8 bits + // per color component, which is what our callers want to know. + // (Some devices report 32 and some devices report 24, because Linux) + pixelDepth = 24; + } + *aPixelDepth = pixelDepth; return NS_OK; - } // GetPixelDepth NS_IMETHODIMP nsScreenGtk :: GetColorDepth(int32_t *aColorDepth) { return GetPixelDepth ( aColorDepth ); - } // GetColorDepth NS_IMETHODIMP