summaryrefslogtreecommitdiffstats
path: root/meta/packages/xorg-xserver/xserver-kdrive/xfbdev-fb-opt.patch
diff options
context:
space:
mode:
Diffstat (limited to 'meta/packages/xorg-xserver/xserver-kdrive/xfbdev-fb-opt.patch')
-rw-r--r--meta/packages/xorg-xserver/xserver-kdrive/xfbdev-fb-opt.patch73
1 files changed, 73 insertions, 0 deletions
diff --git a/meta/packages/xorg-xserver/xserver-kdrive/xfbdev-fb-opt.patch b/meta/packages/xorg-xserver/xserver-kdrive/xfbdev-fb-opt.patch
new file mode 100644
index 0000000000..9a73b4de7c
--- /dev/null
+++ b/meta/packages/xorg-xserver/xserver-kdrive/xfbdev-fb-opt.patch
@@ -0,0 +1,73 @@
1diff --git a/hw/kdrive/fbdev/fbdev.c b/hw/kdrive/fbdev/fbdev.c
2index 86384f0..e27240f 100644
3--- a/hw/kdrive/fbdev/fbdev.c
4+++ b/hw/kdrive/fbdev/fbdev.c
5@@ -38,11 +38,14 @@ fbdevInitialize (KdCardInfo *card, Fbdev
6 {
7 int k;
8 unsigned long off;
9- if ((priv->fd = open("/dev/fb0", O_RDWR)) < 0 && \
10- (priv->fd = open("/dev/fb/0", O_RDWR)) < 0) {
11- perror("Error opening /dev/fb0");
12- return FALSE;
13- }
14+
15+ if ((priv->fd = open(fbdevDevicePath, O_RDWR)) < 0)
16+ {
17+ ErrorF("Error opening framebuffer %s: %s\n",
18+ fbdevDevicePath, strerror(errno));
19+ return FALSE;
20+ }
21+
22 /* quiet valgrind */
23 memset (&priv->fix, '\0', sizeof (priv->fix));
24 if ((k=ioctl(priv->fd, FBIOGET_FSCREENINFO, &priv->fix)) < 0) {
25diff --git a/hw/kdrive/fbdev/fbdev.h b/hw/kdrive/fbdev/fbdev.h
26index d37b995..b7951db 100644
27--- a/hw/kdrive/fbdev/fbdev.h
28+++ b/hw/kdrive/fbdev/fbdev.h
29@@ -53,6 +53,7 @@ typedef struct _fbdevScrPriv {
30 } FbdevScrPriv;
31
32 extern KdCardFuncs fbdevFuncs;
33+extern char* fbdevDevicePath;
34
35 Bool
36 fbdevInitialize (KdCardInfo *card, FbdevPriv *priv);
37diff --git a/hw/kdrive/fbdev/fbinit.c b/hw/kdrive/fbdev/fbinit.c
38index ba9d1c6..b7852a8 100644
39--- a/hw/kdrive/fbdev/fbinit.c
40+++ b/hw/kdrive/fbdev/fbinit.c
41@@ -54,16 +54,29 @@ InitInput (int argc, char **argv)
42 void
43 ddxUseMsg (void)
44 {
45- KdUseMsg();
46+ KdUseMsg();
47+ ErrorF("\nXfbdev Device Usage:\n");
48+ ErrorF("-fb path Framebuffer device to use. Defaults to /dev/fb0\n");
49+ ErrorF("\n");
50 }
51
52 int
53 ddxProcessArgument (int argc, char **argv, int i)
54 {
55- return KdProcessArgument (argc, argv, i);
56+ if (!strcmp (argv[i], "-fb"))
57+ {
58+ if (i+1 < argc)
59+ {
60+ fbdevDevicePath = argv[i+1];
61+ return 2;
62+ }
63+ UseMsg();
64+ exit(1);
65+ }
66+ return KdProcessArgument (argc, argv, i);
67 }
68
69-
70+char *fbdevDevicePath = NULL;
71
72 KdCardFuncs fbdevFuncs = {
73 fbdevCardInit, /* cardinit */