From 97155294fb44c95b305f3aebe98d9e29bbd398fc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Sawicz?= Date: Thu, 4 Sep 2025 09:19:11 +0200 Subject: [PATCH 1/3] mirserver: update for Mir 2.22 --- include/miroil/edid.h | 27 ---------------------- src/platforms/mirserver/platformscreen.cpp | 8 +++++++ 2 files changed, 8 insertions(+), 27 deletions(-) diff --git a/include/miroil/edid.h b/include/miroil/edid.h index ec5996e5..fcd197a5 100644 --- a/include/miroil/edid.h +++ b/include/miroil/edid.h @@ -34,33 +34,6 @@ struct Edid struct PhysicalSizeMM { int width; int height; }; PhysicalSizeMM size{0,0}; - - struct Descriptor { - enum class Type : uint8_t { - timing_identifiers = 0xfa, - white_point_data = 0xfb, - monitor_name = 0xfc, - monitor_limits = 0xfd, - unspecified_text = 0xfe, - serial_number = 0xff, - - undefined = 0x00, - }; - - union Value { - char monitor_name[13]; - char unspecified_text[13]; - char serial_number[13]; - }; - - Type type{Type::undefined}; - Value value{{0}}; - - std::string string_value() const; - }; - Descriptor descriptors[4]; - - Edid& parse_data(std::vector const&); }; } diff --git a/src/platforms/mirserver/platformscreen.cpp b/src/platforms/mirserver/platformscreen.cpp index d27ce391..ff6bc495 100644 --- a/src/platforms/mirserver/platformscreen.cpp +++ b/src/platforms/mirserver/platformscreen.cpp @@ -260,11 +260,19 @@ void PlatformScreen::setMirDisplayConfiguration(const mir::graphics::DisplayConf // Output data - each output has a unique id and corresponding type. Can be multiple cards. m_displayId.output_id = screen.id; + +#if MIR_SERVER_VERSION < MIR_VERSION_NUMBER(2, 22, 0) try { m_displayId.edid.parse_data(reinterpret_cast const&>(screen.edid)); } catch (std::runtime_error const& e) { printf("Failed to parse EDID - %s\n", e.what()); } +#else + m_displayId.edid.vendor = screen.display_info.vendor.value_or(""); + m_displayId.edid.product_code = screen.display_info.product_code.value_or(0); + m_displayId.edid.serial_number = screen.display_info.serial_number.value_or(0); + m_displayId.edid.size = {screen.physical_size_mm.width.as_int(), screen.physical_size_mm.height.as_int()}; +#endif auto type = static_cast(screen.type); //FIXME: need compile time check these are equivalent if (m_type != type) { -- GitLab From 8e928fa3b10463ba1b60bd997fce84098e88b419 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Sawicz?= Date: Fri, 12 Sep 2025 18:41:08 +0200 Subject: [PATCH 2/3] demos: drop usage of deprecated `Descriptor`s --- demos/qtmir-demo-shell/main.cpp | 3 --- 1 file changed, 3 deletions(-) diff --git a/demos/qtmir-demo-shell/main.cpp b/demos/qtmir-demo-shell/main.cpp index 2a5a6a33..4d36d6f8 100644 --- a/demos/qtmir-demo-shell/main.cpp +++ b/demos/qtmir-demo-shell/main.cpp @@ -43,9 +43,6 @@ inline QString stringFromEdid(const miroil::Edid& edid) str += QString::fromStdString(edid.vendor); str += QString("%1%2").arg(edid.product_code).arg(edid.serial_number); - for (int i = 0; i < 4; i++) { - str += QString::fromStdString(edid.descriptors[i].string_value()); - } return str; } -- GitLab From 349ca009f042fe0271b195bbc8892fcd8527048c Mon Sep 17 00:00:00 2001 From: OPNA2608 Date: Fri, 12 Sep 2025 18:45:21 +0200 Subject: [PATCH 3/3] mirsurface: add `mirror_mode_set_to` --- src/modules/QtMir/Application/mirsurface.cpp | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/modules/QtMir/Application/mirsurface.cpp b/src/modules/QtMir/Application/mirsurface.cpp index b37bae31..6af36719 100644 --- a/src/modules/QtMir/Application/mirsurface.cpp +++ b/src/modules/QtMir/Application/mirsurface.cpp @@ -135,6 +135,10 @@ public: void application_id_set_to(mir::scene::Surface const* /* surf */, std::string const& /* application_id */) override {}; #endif +#if MIR_SERVER_VERSION >= MIR_VERSION_NUMBER(2, 22, 0) + void mirror_mode_set_to(mir::scene::Surface const* /* surf */, MirMirrorMode /* mirror_mode */) override {}; +#endif + #else void attrib_changed(MirWindowAttrib, int) override; void resized_to(mir::geometry::Size const&) override; -- GitLab