diff options
author | Richard Purdie <richard@openedhand.com> | 2008-09-25 21:03:38 +0000 |
---|---|---|
committer | Richard Purdie <richard@openedhand.com> | 2008-09-25 21:03:38 +0000 |
commit | 536e19f772eef4ccb026d2f151f188821f6b02ba (patch) | |
tree | 91b97a21fe7f292128ee2d944a9cb360ece360ce /meta | |
parent | 59754eed487b58f72e3ab5e01bbf92d8d4ce2386 (diff) | |
download | poky-536e19f772eef4ccb026d2f151f188821f6b02ba.tar.gz |
xserver-kdrive: Feed xrandr calls to the framebuffer driver in case it can do better than software rotation
git-svn-id: https://svn.o-hand.com/repos/poky/trunk@5279 311d38ba-8fff-0310-9ca6-ca027cbcb966
Diffstat (limited to 'meta')
-rw-r--r-- | meta/packages/xorg-xserver/xserver-kdrive/fbdev_xrandr_ioctl.patch | 61 | ||||
-rw-r--r-- | meta/packages/xorg-xserver/xserver-kdrive_1.3.0.0.bb | 3 |
2 files changed, 63 insertions, 1 deletions
diff --git a/meta/packages/xorg-xserver/xserver-kdrive/fbdev_xrandr_ioctl.patch b/meta/packages/xorg-xserver/xserver-kdrive/fbdev_xrandr_ioctl.patch new file mode 100644 index 0000000000..a5c22a5efc --- /dev/null +++ b/meta/packages/xorg-xserver/xserver-kdrive/fbdev_xrandr_ioctl.patch | |||
@@ -0,0 +1,61 @@ | |||
1 | Index: xorg-server-1.3.0.0/hw/kdrive/fbdev/fbdev.c | ||
2 | =================================================================== | ||
3 | --- xorg-server-1.3.0.0.orig/hw/kdrive/fbdev/fbdev.c 2008-09-25 21:55:12.000000000 +0100 | ||
4 | +++ xorg-server-1.3.0.0/hw/kdrive/fbdev/fbdev.c 2008-09-25 21:55:46.000000000 +0100 | ||
5 | @@ -498,6 +498,7 @@ | ||
6 | KdScreenInfo *screen = pScreenPriv->screen; | ||
7 | FbdevScrPriv *scrpriv = screen->driver; | ||
8 | Bool wasEnabled = pScreenPriv->enabled; | ||
9 | + FbdevPriv *priv = screen->card->driver; | ||
10 | FbdevScrPriv oldscr; | ||
11 | int oldwidth; | ||
12 | int oldheight; | ||
13 | @@ -525,11 +526,46 @@ | ||
14 | oldheight = screen->height; | ||
15 | oldmmwidth = pScreen->mmWidth; | ||
16 | oldmmheight = pScreen->mmHeight; | ||
17 | - | ||
18 | + | ||
19 | /* | ||
20 | * Set new configuration | ||
21 | */ | ||
22 | - | ||
23 | + | ||
24 | + if (newwidth != oldwidth || newheight != oldheight) | ||
25 | + { | ||
26 | + struct fb_var_screeninfo var; | ||
27 | + int k; | ||
28 | + | ||
29 | + k = ioctl (priv->fd, FBIOGET_VSCREENINFO, &var); | ||
30 | + | ||
31 | + if (k < 0) | ||
32 | + { | ||
33 | + ErrorF("Error with framebuffer ioctl FBIOGET_VSCREENINFO: %s", strerror (errno)); | ||
34 | + return FALSE; | ||
35 | + } | ||
36 | + | ||
37 | + var.xres = newwidth; | ||
38 | + var.yres = newheight; | ||
39 | + var.activate = FB_ACTIVATE_NOW; | ||
40 | + | ||
41 | + k = ioctl (priv->fd, FBIOPUT_VSCREENINFO, &var); | ||
42 | + | ||
43 | + if (k >= 0) | ||
44 | + { | ||
45 | + if ((k=ioctl(priv->fd, FBIOGET_FSCREENINFO, &priv->fix)) < 0) | ||
46 | + { | ||
47 | + perror("Error with framebuffer ioctl FIOGET_FSCREENINFO"); | ||
48 | + close (priv->fd); | ||
49 | + return FALSE; | ||
50 | + } | ||
51 | + if ((k=ioctl(priv->fd, FBIOGET_VSCREENINFO, &priv->var)) < 0) { | ||
52 | + perror("Error framebuffer ioctl FIOGET_VSCREENINFO"); | ||
53 | + close (priv->fd); | ||
54 | + return FALSE; | ||
55 | + } | ||
56 | + } | ||
57 | + } | ||
58 | + | ||
59 | scrpriv->randr = KdAddRotation (screen->randr, randr); | ||
60 | |||
61 | KdOffscreenSwapOut (screen->pScreen); | ||
diff --git a/meta/packages/xorg-xserver/xserver-kdrive_1.3.0.0.bb b/meta/packages/xorg-xserver/xserver-kdrive_1.3.0.0.bb index bdc3a1f6f7..b1d654b391 100644 --- a/meta/packages/xorg-xserver/xserver-kdrive_1.3.0.0.bb +++ b/meta/packages/xorg-xserver/xserver-kdrive_1.3.0.0.bb | |||
@@ -3,7 +3,7 @@ require xserver-kdrive.inc | |||
3 | DEPENDS += "libxkbfile libxcalibrate" | 3 | DEPENDS += "libxkbfile libxcalibrate" |
4 | 4 | ||
5 | PE = "1" | 5 | PE = "1" |
6 | PR = "r19" | 6 | PR = "r21" |
7 | 7 | ||
8 | SRC_URI = "${XORG_MIRROR}/individual/xserver/xorg-server-${PV}.tar.bz2 \ | 8 | SRC_URI = "${XORG_MIRROR}/individual/xserver/xorg-server-${PV}.tar.bz2 \ |
9 | file://extra-kmodes.patch;patch=1 \ | 9 | file://extra-kmodes.patch;patch=1 \ |
@@ -20,6 +20,7 @@ SRC_URI = "${XORG_MIRROR}/individual/xserver/xorg-server-${PV}.tar.bz2 \ | |||
20 | file://enable-xcalibrate.patch;patch=1 \ | 20 | file://enable-xcalibrate.patch;patch=1 \ |
21 | file://hide-cursor-and-ppm-root.patch;patch=1 \ | 21 | file://hide-cursor-and-ppm-root.patch;patch=1 \ |
22 | file://xcalibrate_coords.patch;patch=1 \ | 22 | file://xcalibrate_coords.patch;patch=1 \ |
23 | file://fbdev_xrandr_ioctl.patch;patch=1 \ | ||
23 | file://scheduler.patch;patch=1" | 24 | file://scheduler.patch;patch=1" |
24 | 25 | ||
25 | S = "${WORKDIR}/xorg-server-${PV}" | 26 | S = "${WORKDIR}/xorg-server-${PV}" |