diff --git a/widget/gtk/ScreenHelperGTK.cpp b/widget/gtk/ScreenHelperGTK.cpp --- a/widget/gtk/ScreenHelperGTK.cpp +++ b/widget/gtk/ScreenHelperGTK.cpp @@ -260,18 +260,25 @@ gint heightMM = gdk_screen_get_monitor_height_mm(aScreen, aMonitorNum); if (heightMM > 0) { dpi = rect.height / (heightMM / MM_PER_INCH_FLOAT); } + bool isHDR = false; +#ifdef MOZ_WAYLAND + if (GdkIsWaylandDisplay()) { + isHDR = WaylandDisplayGet()->IsHDREnabled(); + } +#endif + LOG_SCREEN( "New monitor %d size [%d,%d -> %d x %d] depth %d scale %f CssScale %f " - "DPI %f refresh %d ]", + "DPI %f refresh %d HDR %d]", aMonitorNum, rect.x, rect.y, rect.width, rect.height, pixelDepth, - contentsScale.scale, defaultCssScale.scale, dpi, refreshRate); - return MakeAndAddRef(rect, availRect, pixelDepth, pixelDepth, - refreshRate, contentsScale, defaultCssScale, dpi, - Screen::IsPseudoDisplay::No, Screen::IsHDR::No); + contentsScale.scale, defaultCssScale.scale, dpi, refreshRate, isHDR); + return MakeAndAddRef( + rect, availRect, pixelDepth, pixelDepth, refreshRate, contentsScale, + defaultCssScale, dpi, Screen::IsPseudoDisplay::No, Screen::IsHDR(isHDR)); } void ScreenGetterGtk::RefreshScreens() { LOG_SCREEN("ScreenGetterGtk::RefreshScreens()"); AutoTArray, 4> screenList; @@ -286,10 +293,11 @@ ScreenManager::Refresh(std::move(screenList)); } gint ScreenHelperGTK::GetGTKMonitorScaleFactor(gint aMonitorNum) { + MOZ_ASSERT(NS_IsMainThread()); GdkScreen* screen = gdk_screen_get_default(); return aMonitorNum < gdk_screen_get_n_monitors(screen) ? gdk_screen_get_monitor_scale_factor(screen, aMonitorNum) : 1; }