summarylogtreecommitdiffstats
path: root/fallback-x.patch
blob: 7015eac732f1aeed8fee342ec4c6be282c81974d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
diff -urN libva-vdpau-driver-0.7.4/src/vdpau_driver.c libva-vdpau-driver-0.7.4.chromium/src/vdpau_driver.c
--- libva-vdpau-driver-0.7.4/src/vdpau_driver.c	2012-10-05 16:02:58.000000000 +0100
+++ libva-vdpau-driver-0.7.4.chromium/src/vdpau_driver.c	2016-10-05 18:47:12.937566583 +0100
@@ -174,7 +174,7 @@
     }
     vdpau_gate_exit(driver_data);
 
-    if (driver_data->vdp_dpy) {
+    if ((!driver_data->x_fallback) && driver_data->vdp_dpy) {
         XCloseDisplay(driver_data->vdp_dpy);
         driver_data->vdp_dpy = NULL;
     }
@@ -187,9 +187,14 @@
     /* Create a dedicated X11 display for VDPAU purposes */
     const char * const x11_dpy_name = XDisplayString(driver_data->x11_dpy);
     driver_data->vdp_dpy = XOpenDisplay(x11_dpy_name);
-    if (!driver_data->vdp_dpy)
-        return VA_STATUS_ERROR_UNKNOWN;
-
+    /* Fallback to existing X11 display */
+    driver_data->x_fallback = false;
+    if (!driver_data->vdp_dpy) {
+        driver_data->x_fallback = true;
+        driver_data->vdp_dpy = driver_data->x11_dpy;
+        printf("Failed to create dedicated X11 display!\n");
+    }
+        
     VdpStatus vdp_status;
     driver_data->vdp_device = VDP_INVALID_HANDLE;
     vdp_status = vdp_device_create_x11(
diff -urN libva-vdpau-driver-0.7.4/src/vdpau_driver.h libva-vdpau-driver-0.7.4.chromium/src/vdpau_driver.h
--- libva-vdpau-driver-0.7.4/src/vdpau_driver.h	2012-10-05 16:02:58.000000000 +0100
+++ libva-vdpau-driver-0.7.4.chromium/src/vdpau_driver.h	2016-10-05 18:48:33.701593155 +0100
@@ -21,6 +21,7 @@
 #ifndef VDPAU_DRIVER_H
 #define VDPAU_DRIVER_H
 
+#include <stdbool.h>
 #include <va/va_backend.h>
 #include "vaapi_compat.h"
 #include "vdpau_gate.h"
@@ -100,6 +101,7 @@
     uint64_t                    va_display_attrs_mtime[VDPAU_MAX_DISPLAY_ATTRIBUTES];
     unsigned int                va_display_attrs_count;
     char                        va_vendor[256];
+    bool			x_fallback;
 };
 
 typedef struct object_config   *object_config_p;