Login
Log in using an SSO provider:
Fedora Account System
Red Hat Associate
Red Hat Customer
Login using a Red Hat Bugzilla account
Forgot Password
Create an Account
Red Hat Bugzilla – Attachment 1490887 Details for
Bug 1579257
System boots to blank screen when Xinerama enabled with nvidia/nouveau driver
Home
New
Search
Simple Search
Advanced Search
My Links
Browse
Requests
Reports
Current State
Search
Tabular reports
Graphical reports
Duplicates
Other Reports
User Changes
Plotly Reports
Bug Status
Bug Severity
Non-Defaults
Product Dashboard
Help
Page Help!
Bug Writing Guidelines
What's new
Browser Support Policy
5.0.4.rh92 Release notes
FAQ
Guides index
User guide
Web Services
Contact
Legal
[?]
This site requires JavaScript to be enabled to function correctly, please enable it.
[patch]
Mutter patches for rhel 7.5
handle-lack-of-xrandr-rhel-7.5.patch (text/plain), 8.54 KB, created by
Jonas Ådahl
on 2018-10-05 15:39:20 UTC
(
hide
)
Description:
Mutter patches for rhel 7.5
Filename:
MIME Type:
Creator:
Jonas Ådahl
Created:
2018-10-05 15:39:20 UTC
Size:
8.54 KB
patch
obsolete
>From 4ed250e7e3a60250675fbcd3253d854bf1d06b37 Mon Sep 17 00:00:00 2001 >From: =?UTF-8?q?Jonas=20=C3=85dahl?= <jadahl@gmail.com> >Date: Wed, 3 Oct 2018 10:50:07 +0200 >Subject: [PATCH 1/2] monitor-manager/xrandr: Move dpms state and screen size > updating into helpers > >To be used by no-Xrandr fallback path. >--- > .../x11/meta-monitor-manager-xrandr.c | 53 ++++++++++++------- > 1 file changed, 34 insertions(+), 19 deletions(-) > >diff --git a/src/backends/x11/meta-monitor-manager-xrandr.c b/src/backends/x11/meta-monitor-manager-xrandr.c >index 1e93a1d98c..bca20c95ee 100644 >--- a/src/backends/x11/meta-monitor-manager-xrandr.c >+++ b/src/backends/x11/meta-monitor-manager-xrandr.c >@@ -734,22 +734,12 @@ get_xmode_name (XRRModeInfo *xmode) > } > > static void >-meta_monitor_manager_xrandr_read_current (MetaMonitorManager *manager) >+update_dpms_state (MetaMonitorManagerXrandr *manager_xrandr) > { >- MetaMonitorManagerXrandr *manager_xrandr = META_MONITOR_MANAGER_XRANDR (manager); >- XRRScreenResources *resources; >- RROutput primary_output; >- unsigned int i, j, k; >- unsigned int n_actual_outputs; >- int min_width, min_height; >- Screen *screen; >+ MetaMonitorManager *manager = META_MONITOR_MANAGER (manager_xrandr); > BOOL dpms_capable, dpms_enabled; > CARD16 dpms_state; > >- if (manager_xrandr->resources) >- XRRFreeScreenResources (manager_xrandr->resources); >- manager_xrandr->resources = NULL; >- > dpms_capable = DPMSCapable (manager_xrandr->xdisplay); > > if (dpms_capable && >@@ -779,18 +769,43 @@ meta_monitor_manager_xrandr_read_current (MetaMonitorManager *manager) > { > manager->power_save_mode = META_POWER_SAVE_UNSUPPORTED; > } >+} > >- XRRGetScreenSizeRange (manager_xrandr->xdisplay, DefaultRootWindow (manager_xrandr->xdisplay), >- &min_width, >- &min_height, >- &manager_xrandr->max_screen_width, >- &manager_xrandr->max_screen_height); >+static void >+update_screen_size (MetaMonitorManagerXrandr *manager_xrandr) >+{ >+ MetaMonitorManager *manager = META_MONITOR_MANAGER (manager_xrandr); >+ int min_width, min_height; >+ Screen *screen; >+ >+ XRRGetScreenSizeRange (manager_xrandr->xdisplay, >+ DefaultRootWindow (manager_xrandr->xdisplay), >+ &min_width, >+ &min_height, >+ &manager_xrandr->max_screen_width, >+ &manager_xrandr->max_screen_height); > > screen = ScreenOfDisplay (manager_xrandr->xdisplay, >- DefaultScreen (manager_xrandr->xdisplay)); >- /* This is updated because we called RRUpdateConfiguration below */ >+ DefaultScreen (manager_xrandr->xdisplay)); > manager->screen_width = WidthOfScreen (screen); > manager->screen_height = HeightOfScreen (screen); >+} >+ >+static void >+meta_monitor_manager_xrandr_read_current (MetaMonitorManager *manager) >+{ >+ MetaMonitorManagerXrandr *manager_xrandr = META_MONITOR_MANAGER_XRANDR (manager); >+ XRRScreenResources *resources; >+ RROutput primary_output; >+ unsigned int i, j, k; >+ unsigned int n_actual_outputs; >+ >+ if (manager_xrandr->resources) >+ XRRFreeScreenResources (manager_xrandr->resources); >+ manager_xrandr->resources = NULL; >+ >+ update_dpms_state (manager_xrandr); >+ update_screen_size (manager_xrandr); > > if (manager_xrandr->need_hardware_poll) > { >-- >2.17.1 > >From ba5c57239e945156607469b7da7d1e6039f74166 Mon Sep 17 00:00:00 2001 >From: =?UTF-8?q?Jonas=20=C3=85dahl?= <jadahl@gmail.com> >Date: Wed, 3 Oct 2018 10:50:47 +0200 >Subject: [PATCH 2/2] monitor-manager/xrandr: Create dummy screen sized monitor > if no RANDR > >When there is no RANDR support enabled in the X server, we wont get >notified of any monitors, resulting in mutter believing we're being >headless. To get at least something working, although with no way >configuration ability, lets pretend the whole screen is just a single >monitor with a single output, crtc and mode. >--- > .../x11/meta-monitor-manager-xrandr.c | 71 +++++++++++++++++++ > .../x11/meta-monitor-manager-xrandr.h | 2 + > 2 files changed, 73 insertions(+) > >diff --git a/src/backends/x11/meta-monitor-manager-xrandr.c b/src/backends/x11/meta-monitor-manager-xrandr.c >index bca20c95ee..e2314b4b3b 100644 >--- a/src/backends/x11/meta-monitor-manager-xrandr.c >+++ b/src/backends/x11/meta-monitor-manager-xrandr.c >@@ -66,6 +66,7 @@ struct _MetaMonitorManagerXrandr > guint logind_signal_sub_id; > > gboolean need_hardware_poll; >+ gboolean has_randr; > gboolean has_randr15; > > xcb_timestamp_t last_xrandr_set_timestamp; >@@ -791,6 +792,60 @@ update_screen_size (MetaMonitorManagerXrandr *manager_xrandr) > manager->screen_height = HeightOfScreen (screen); > } > >+static gboolean >+read_current_no_xrandr (MetaMonitorManagerXrandr *manager_xrandr) >+{ >+ MetaMonitorManager *manager = >+ META_MONITOR_MANAGER (manager_xrandr); >+ MetaCrtcMode *mode; >+ MetaCrtc *crtc; >+ MetaOutput *output; >+ >+ update_dpms_state (manager_xrandr); >+ update_screen_size (manager_xrandr); >+ >+ manager->n_modes = 1; >+ manager->n_crtcs = 1; >+ manager->n_outputs = 1; >+ manager->modes = g_new0 (MetaCrtcMode, 1); >+ manager->crtcs = g_new0 (MetaCrtc, 1); >+ manager->outputs = g_new0 (MetaOutput, 1); >+ >+ mode = &manager->modes[0]; >+ mode->mode_id = 1; >+ mode->width = manager->screen_width; >+ mode->height = manager->screen_height; >+ mode->refresh_rate = 60.0; >+ mode->name = g_strdup_printf ("%dx%d", mode->width, mode->height); >+ >+ crtc = &manager->crtcs[0]; >+ crtc->crtc_id = 1; >+ crtc->rect = (MetaRectangle) { .width = mode->width, .height = mode->height }; >+ crtc->current_mode = mode; >+ >+ output = &manager->outputs[0]; >+ output->winsys_id = 1; >+ output->name = g_strdup ("X11 Screen"); >+ output->vendor = g_strdup ("unknown"); >+ output->product = g_strdup ("unknown"); >+ output->serial = g_strdup ("unknown"); >+ output->hotplug_mode_update = TRUE; >+ output->suggested_x = -1; >+ output->suggested_y = -1; >+ output->connector_type = META_CONNECTOR_TYPE_Unknown; >+ output->modes = g_new0 (MetaCrtcMode *, 1); >+ output->modes[0] = mode; >+ output->n_modes = 1; >+ output->preferred_mode = mode; >+ output->possible_crtcs = g_new0 (MetaCrtc *, 1); >+ output->possible_crtcs[0] = crtc; >+ output->n_possible_crtcs = 1; >+ output->crtc = crtc; >+ output->is_primary = TRUE; >+ >+ return TRUE; >+} >+ > static void > meta_monitor_manager_xrandr_read_current (MetaMonitorManager *manager) > { >@@ -800,6 +855,9 @@ meta_monitor_manager_xrandr_read_current (MetaMonitorManager *manager) > unsigned int i, j, k; > unsigned int n_actual_outputs; > >+ if (!manager_xrandr->has_randr) >+ read_current_no_xrandr (manager_xrandr); >+ > if (manager_xrandr->resources) > XRRFreeScreenResources (manager_xrandr->resources); > manager_xrandr->resources = NULL; >@@ -1528,9 +1586,18 @@ meta_monitor_manager_xrandr_apply_monitors_config (MetaMonitorManager *mana > MetaMonitorsConfigMethod method, > GError **error) > { >+ MetaMonitorManagerXrandr *manager_xrandr = >+ META_MONITOR_MANAGER_XRANDR (manager); > GPtrArray *crtc_infos; > GPtrArray *output_infos; > >+ if (!manager_xrandr->has_randr) >+ { >+ g_set_error (error, G_IO_ERROR, G_IO_ERROR_FAILED, >+ "Tried to change configuration without XRANDR support"); >+ return FALSE; >+ } >+ > if (!config) > { > meta_monitor_manager_xrandr_rebuild_derived (manager, NULL); >@@ -2057,11 +2124,15 @@ meta_monitor_manager_xrandr_init (MetaMonitorManagerXrandr *manager_xrandr) > &manager_xrandr->rr_event_base, > &manager_xrandr->rr_error_base)) > { >+ g_warning ("No RANDR support, monitor configuration disabled"); > return; > } > else > { > int major_version, minor_version; >+ >+ manager_xrandr->has_randr = TRUE; >+ > /* We only use ScreenChangeNotify, but GDK uses the others, > and we don't want to step on its toes */ > XRRSelectInput (manager_xrandr->xdisplay, >diff --git a/src/backends/x11/meta-monitor-manager-xrandr.h b/src/backends/x11/meta-monitor-manager-xrandr.h >index 3076e24d9c..05d073d66b 100644 >--- a/src/backends/x11/meta-monitor-manager-xrandr.h >+++ b/src/backends/x11/meta-monitor-manager-xrandr.h >@@ -29,6 +29,8 @@ > G_DECLARE_FINAL_TYPE (MetaMonitorManagerXrandr, meta_monitor_manager_xrandr, > META, MONITOR_MANAGER_XRANDR, MetaMonitorManager) > >+gboolean meta_monitor_manager_xrandr_has_randr (MetaMonitorManagerXrandr *manager_xrandr); >+ > gboolean meta_monitor_manager_xrandr_handle_xevent (MetaMonitorManagerXrandr *manager, > XEvent *event); > >-- >2.17.1 >
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Diff
Attachments on
bug 1579257
: 1490887 |
1490888