diff options
Diffstat (limited to 'catalyst-workaround.patch')
-rw-r--r-- | catalyst-workaround.patch | 72 |
1 files changed, 61 insertions, 11 deletions
diff --git a/catalyst-workaround.patch b/catalyst-workaround.patch index c63ac1bc53f3..8c7b2d7bbc04 100644 --- a/catalyst-workaround.patch +++ b/catalyst-workaround.patch @@ -1,9 +1,6 @@ -@@ -, +, @@ - src/backends/x11/meta-monitor-manager-xrandr.c | 47 ++++++++++++++++++++++++-- - 1 file changed, 44 insertions(+), 3 deletions(-) ---- a/src/backends/x11/meta-monitor-manager-xrandr.c -+++ a/src/backends/x11/meta-monitor-manager-xrandr.c -@@ -1017,6 +1017,41 @@ output_set_underscanning_xrandr (MetaMonitorManagerXrandr *manager_xrandr, +--- mutter/src/backends/x11/meta-monitor-manager-xrandr.c.orig 2017-04-24 21:56:35.531470289 +0200 ++++ mutter/src/backends/x11/meta-monitor-manager-xrandr.c 2017-04-30 01:50:55.593135688 +0200 +@@ -1060,6 +1060,41 @@ } } @@ -43,9 +40,9 @@ +} + static void - meta_monitor_manager_xrandr_apply_configuration (MetaMonitorManager *manager, - MetaCRTCInfo **crtcs, -@@ -1193,6 +1228,8 @@ meta_monitor_manager_xrandr_apply_configuration (MetaMonitorManager *manager, + apply_crtc_assignments (MetaMonitorManager *manager, + MetaCrtcInfo **crtcs, +@@ -1235,6 +1270,8 @@ } } @@ -54,7 +51,7 @@ for (i = 0; i < n_outputs; i++) { MetaOutputInfo *output_info = outputs[i]; -@@ -1205,9 +1242,13 @@ meta_monitor_manager_xrandr_apply_configuration (MetaMonitorManager *manager, +@@ -1247,14 +1284,21 @@ (XID)output_info->output->winsys_id); } @@ -70,4 +67,57 @@ + } if (output_get_supports_underscanning_xrandr (manager_xrandr, output_info->output)) - output_set_underscanning_xrandr (manager_xrandr, +- output_set_underscanning_xrandr (manager_xrandr, +- output_info->output, +- output_info->is_underscanning); ++ if (fglrx_kernel_module_loaded != 1) ++ { ++ output_set_underscanning_xrandr (manager_xrandr, ++ output_info->output, ++ output_info->is_underscanning); ++ } + + output->is_primary = output_info->is_primary; + output->is_presentation = output_info->is_presentation; +@@ -1335,22 +1379,26 @@ + MetaOutput *output, + gint value) + { +- MetaMonitorManagerXrandr *manager_xrandr = META_MONITOR_MANAGER_XRANDR (manager); +- Atom atom; +- int hw_value; +- +- hw_value = round ((double)value / 100.0 * output->backlight_max + output->backlight_min); +- +- atom = XInternAtom (manager_xrandr->xdisplay, "Backlight", False); +- +- xcb_randr_change_output_property (XGetXCBConnection (manager_xrandr->xdisplay), +- (XID)output->winsys_id, +- atom, XCB_ATOM_INTEGER, 32, +- XCB_PROP_MODE_REPLACE, +- 1, &hw_value); ++ int fglrx_kernel_module_loaded = output_get_fglrx_kernel_module_loaded(); ++ if (fglrx_kernel_module_loaded != 1) ++ { ++ MetaMonitorManagerXrandr *manager_xrandr = META_MONITOR_MANAGER_XRANDR (manager); ++ Atom atom; ++ int hw_value; ++ ++ hw_value = round ((double)value / 100.0 * output->backlight_max + output->backlight_min); ++ ++ atom = XInternAtom (manager_xrandr->xdisplay, "Backlight", False); ++ ++ xcb_randr_change_output_property (XGetXCBConnection (manager_xrandr->xdisplay), ++ (XID)output->winsys_id, ++ atom, XCB_ATOM_INTEGER, 32, ++ XCB_PROP_MODE_REPLACE, ++ 1, &hw_value); + +- /* We're not selecting for property notifies, so update the value immediately */ +- output->backlight = normalize_backlight (output, hw_value); ++ /* We're not selecting for property notifies, so update the value immediately */ ++ output->backlight = normalize_backlight (output, hw_value); ++ } + } + + static void |