forked from pool/plymouth
Cliff Zhao
14285f6307
- Update to version 0.9.5~git20210406.e554475: * client: Free command parser after event loop * script: Don't crash for scripts without input validation functions * script: Enforce separate lines for function parameters * configure: Fix help string for --with-background-end-color-stop * two-step: Make SHOW_ANIMATION_FRACTION configurable * plugin: animation should transition to the end animation * theme: Allow themes to configure at which percentage * scripts: support populating from configurable theme dir * main: refactor code for searching the theme path * main: add ThemeDir configuration option * Fix crash when hiding message in details splash mode * drm: Honour screen rotation when detecting HiDPI * main: add --ignore-serial-consoles option so we can ignore serial consoles - Update SPEC file: A few minor tweaks to fix part of rpmlint error reporting. - Drop plymouth-no-longer-modify-conf-to-drop-isopensuse-macro.patch: Upstream accompish this requirement in 11b0ce0: Look for config in runtime dir first(jsc#SLE-11637). - Drop source boot-duration: The source is an empty file, ghost macro in %files section is enough to work. OBS-URL: https://build.opensuse.org/request/show/970652 OBS-URL: https://build.opensuse.org/package/show/Base:System/plymouth?expand=0&rev=313
39 lines
2.4 KiB
Diff
39 lines
2.4 KiB
Diff
diff -Nura plymouth-0.9.5~git20220412.e960111/src/libply-splash-core/ply-device-manager.c plymouth-0.9.5~git20220412.e960111_new/src/libply-splash-core/ply-device-manager.c
|
|
--- plymouth-0.9.5~git20220412.e960111/src/libply-splash-core/ply-device-manager.c 2022-04-15 16:39:24.000000000 +0800
|
|
+++ plymouth-0.9.5~git20220412.e960111_new/src/libply-splash-core/ply-device-manager.c 2022-04-18 16:33:00.126364096 +0800
|
|
@@ -279,13 +279,33 @@
|
|
subsystem = udev_device_get_subsystem (device);
|
|
ply_trace ("device subsystem is %s", subsystem);
|
|
|
|
+ const char *card_vendor = udev_device_get_sysattr_value (device, "device/vendor");
|
|
+ const char *card_device = udev_device_get_sysattr_value (device, "device/device");
|
|
+ bool use_fb = false;
|
|
+ if (card_vendor) {
|
|
+ /* Cirrus */
|
|
+ if (strcmp ("0x1013", card_vendor) == 0)
|
|
+ use_fb = true;
|
|
+ /* "Technical Corp", also used by bochs */
|
|
+ else if (strcmp ("0x1234", card_vendor) == 0)
|
|
+ use_fb = strcmp("0x1111", card_device) == 0;
|
|
+ }
|
|
+
|
|
if (strcmp (subsystem, SUBSYSTEM_DRM) == 0) {
|
|
ply_trace ("found DRM device %s", device_path);
|
|
renderer_type = PLY_RENDERER_TYPE_DRM;
|
|
+ if (use_fb) {
|
|
+ ply_trace ("forcing use of framebuffer for cirrusdrmfb");
|
|
+ renderer_type = PLY_RENDERER_TYPE_NONE;
|
|
+ }
|
|
} else if (strcmp (subsystem, SUBSYSTEM_FRAME_BUFFER) == 0) {
|
|
ply_trace ("found frame buffer device %s", device_path);
|
|
- if (!fb_device_has_drm_device (manager, device))
|
|
+ if (use_fb) {
|
|
renderer_type = PLY_RENDERER_TYPE_FRAME_BUFFER;
|
|
+ }
|
|
+ else if (!fb_device_has_drm_device (manager, device)) {
|
|
+ ply_trace ("avoiding use of framebuffer to not block DRM drivers from working");
|
|
+ }
|
|
else
|
|
ply_trace ("ignoring, since there's a DRM device associated with it");
|
|
}
|