Gentoo Forums
Gentoo Forums
Gentoo Forums
Quick Search: in
slow terminal redraw when Composite is enabled
View unanswered posts
View posts from last 24 hours
View posts from last 7 days

Goto page 1, 2  Next  
Reply to topic    Gentoo Forums Forum Index Desktop Environments
View previous topic :: View next topic  
Author Message
flazz
Guru
Guru


Joined: 22 Nov 2003
Posts: 496
Location: Florida

PostPosted: Sat Oct 27, 2007 5:10 am    Post subject: slow terminal redraw when Composite is enabled Reply with quote

When I have composite enabled in my xorg.conf redrawing (resizing, restoring, switching vitrual desktops, ...) terminals (xfce's and urxvt specifically) is very slow.

When turned off, redrawing is normal.

is there a solution to this?
Back to top
View user's profile Send private message
pussi
l33t
l33t


Joined: 08 May 2004
Posts: 727
Location: Finland

PostPosted: Sat Oct 27, 2007 7:09 am    Post subject: Reply with quote

this is caused by some security fix in xorg 7.3
afaik only way to fix this atm is downgrading to xorg 7.2
Back to top
View user's profile Send private message
flazz
Guru
Guru


Joined: 22 Nov 2003
Posts: 496
Location: Florida

PostPosted: Sat Oct 27, 2007 8:18 pm    Post subject: Reply with quote

i'm running 7.2, i tried upgrading to 7.3 and it was still there, also in 7.3 my mouse didn't work

so i guess we just wait??
Back to top
View user's profile Send private message
rburcham
Apprentice
Apprentice


Joined: 20 Mar 2003
Posts: 247

PostPosted: Sat Oct 27, 2007 8:44 pm    Post subject: Reply with quote

I am getting this in KDE using both emerald and kde-window-decorator, specifically in konsole. The window behavior (drag resize shade) work well enough, but text out within the console is VERY slow. For instance, with a screen full of text, the shade and unshade effect occur on the konsole window quickly, but following the unshade the text within the konsole redraws very very slow. If I have an emerge going on in a konsole, the text scrolling/refresh/updates are super slow. During this time the X process has the cpu pegged.

xterm does not exhibit any of this behavior.

I have seen this with 7.2 and 7.3

*EDIT*

I unmasked xorg-server-1.4-r2 and tried it too. Bottom line there doesn't seem to be any combination of xorg that allows compiz to run without pegging the cpu almost immediately. Kind of a bummer, I have to fusion-icon back to kwin to get my machine back. Never had any difficulty with beryl, but my suspicion is this has more to do with recent X changes than the compositing wm. Here's my setup:

Code:
# emerge xorg-x11 xorg-server compiz-fusion nvidia-drivers -vp

These are the packages that would be merged, in order:

Calculating dependencies... done!
[ebuild  N    ] app-doc/xorg-docs-1.4-r1  USE="-debug -doc" 8,106 kB
[ebuild   R   ] x11-base/xorg-server-1.4-r2  USE="dri hal ipv6 nptl sdl xorg -3dfx -debug -dmx -kdrive -minimal -xprint" INPUT_DEVICES="evdev keyboard mouse -acecad -aiptek -calcomp -citron -digitaledge -dmc -dynapro -elo2300 -elographics -fpit -hyperpen -jamstudio -joystick -magellan -microtouch -mutouch -palmax -penmount -spaceorb -summa -synaptics -tek4957 -ur98 -vmmouse -void -wacom" VIDEO_CARDS="nv nvidia vesa -amd -apm -ark -chips -cirrus -cyrix -dummy -epson -fbdev -glint -i128 -i740 -i810 (-impact) -imstt -mach64 -mga -neomagic (-newport) -nsc -r128 -radeon -rendition -s3 -s3virge -savage -siliconmotion -sis -sisusb (-sunbw2) (-suncg14) (-suncg3) (-suncg6) (-sunffb) (-sunleo) (-suntcx) -tdfx -tga -trident -tseng -v4l -vermilion -vga -via -vmware -voodoo -xgi" 0 kB
[ebuild   R   ] x11-wm/compiz-fusion-0.6.0  USE="gnome kde -unsupported%" 0 kB [0=>1]
[ebuild   R   ] x11-drivers/nvidia-drivers-100.14.19  USE="gtk -acpi (-multilib)" 0 kB
[ebuild   R   ] x11-base/xorg-x11-7.2  0 kB

Total: 5 packages (1 new, 4 reinstalls), Size of downloads: 8,106 kB
Portage tree and overlays:
 [0] /usr/portage
 [1] /usr/portage/local/layman/xeffects
Back to top
View user's profile Send private message
pussi
l33t
l33t


Joined: 08 May 2004
Posts: 727
Location: Finland

PostPosted: Sun Oct 28, 2007 1:26 am    Post subject: Reply with quote

flazz wrote:
i'm running 7.2, i tried upgrading to 7.3 and it was still there, also in 7.3 my mouse didn't work

so i guess we just wait??
ok, then this is some different issue
Back to top
View user's profile Send private message
unK
l33t
l33t


Joined: 06 Feb 2007
Posts: 769

PostPosted: Sun Oct 28, 2007 7:31 pm    Post subject: Reply with quote

pussi wrote:
flazz wrote:
i'm running 7.2, i tried upgrading to 7.3 and it was still there, also in 7.3 my mouse didn't work

so i guess we just wait??
ok, then this is some different issue

It could be, but look at this thread. If you are using xorg-server-1.3.0.0-r1 or higher, you have to downgrade to 1.3.0.0 to get it to work as fast as before.
Back to top
View user's profile Send private message
rburcham
Apprentice
Apprentice


Joined: 20 Mar 2003
Posts: 247

PostPosted: Mon Oct 29, 2007 7:28 pm    Post subject: Reply with quote

flazz - your mouse didn't work because whenever you do a full rev upgrade/downgrade of X, you have to rebuild all the drivers too:

Code:
# emerge xf86-input-mouse -v


I can confirm that rolling back to x11-base/xorg-server-1.2.0-r3 resolved my horrendous slowdown & high CPU problems. Thanks unK.
Back to top
View user's profile Send private message
flazz
Guru
Guru


Joined: 22 Nov 2003
Posts: 496
Location: Florida

PostPosted: Tue Oct 30, 2007 3:12 am    Post subject: Reply with quote

confirmed: rolling back to xorg-server 1.3.0.0 fixes the problem

btw this worked on one computer, but on another no composite seems to be loading at all.
Back to top
View user's profile Send private message
cDub
n00b
n00b


Joined: 31 Dec 2007
Posts: 1

PostPosted: Mon Dec 31, 2007 4:32 am    Post subject: Reply with quote

I know this thread is a bit old now, but I'm having the same problem that flazz was -- konsole has a very slow redraw, as do windows that are resized using the normal resize method while Compiz Fusion is running. I've tried downgrading to xorg-server 1.3.0.0 and even 1.2.0-r3, but to no avail. My performance isn't otherwise too bad, but I'd like to get this fixed if I can. :)
Thanks.

EDIT: Oh yeah, I guess I should have said this... I'm using NVIDIA drivers (on a 7800 GS AGP).


Last edited by cDub on Wed Jan 02, 2008 8:44 pm; edited 1 time in total
Back to top
View user's profile Send private message
natesully
n00b
n00b


Joined: 23 Feb 2006
Posts: 49

PostPosted: Wed Jan 02, 2008 5:53 am    Post subject: Reply with quote

I just fixed this on my new intel video card by setting "AccelMethod" to "XAA". It's EXA by default, which can't scroll for some reason. Doing this also fixed some little decoration glitches.
Back to top
View user's profile Send private message
Bevan
n00b
n00b


Joined: 26 May 2006
Posts: 37

PostPosted: Wed Jan 30, 2008 12:52 am    Post subject: Reply with quote

Hi!

I would like to know if there is any change in newer Xorg versions or if there is a possible workaround. xorg-server-1.3.0.0 is not in portage anymore, so I'm currently running version 1.3.0.0-r4. With this version I have very slow redrawing of some windows (like gnome-terminal).

I've got a nVidia GeForce 7600GT and I'm currently using nvidia-drivers version 169.09.

Is there any way to solve this problem? Is it maybe fixed in new xorg-server-1.4 versions?

Greets,
Michael
Back to top
View user's profile Send private message
Ionflux
n00b
n00b


Joined: 28 Sep 2003
Posts: 29

PostPosted: Thu Feb 07, 2008 2:24 am    Post subject: Reply with quote

This problem seems to have been around for a while. Now it's resurfaced again since the 1.3.0.0 ebuild has been taken out of portage. :(

Anyway, you can still get the ebuild from the Google cache. Then

1) Copy the ebuild source to your local portage overlay (to x11-base/xorg-server/xorg-server.1.3.0.0.ebuild). (Don't copy it to the system portage tree, it will get deleted on the next sync.)
2) Run ebuild xorg-server.1.3.0.0.ebuild manifest.
3) Copy the patches (from the portage tree) to the files directory.
4) Mask >x11-base/xorg-server-1.3.0.0.
5) Re-emerge xorg-server.
6) Enjoy fast terminals again. 8)

There is also this bug report which suggests turning off the composite extension as a "fix". But of course that's not a fix, it is turning off a nice feature.

Edit: Now that I think of it, it may be sufficient to just copy the xorg-server-1.3.0.0-r4.ebuild and edit out the patch responsible for the problem. I'll check on that if I find the time.
_________________
"The Multiverse doesn't make sense, and it ain't supposed to."
Back to top
View user's profile Send private message
semdornus
n00b
n00b


Joined: 13 Sep 2007
Posts: 58
Location: Tokyo

PostPosted: Thu Feb 07, 2008 2:53 am    Post subject: Reply with quote

For those with an nvidia card nvidia-settings -a InitialPixmapPlacement=2 seems to help as well.
Back to top
View user's profile Send private message
fikiz
Apprentice
Apprentice


Joined: 07 Mar 2005
Posts: 282
Location: Italy

PostPosted: Sat Feb 09, 2008 8:44 am    Post subject: Reply with quote

^ ^ ^ ^
no effect for me of this command with my nvidia card.
I don't know how to check if composite is enabled and how to disable it. somebody could help me?

thanks
Back to top
View user's profile Send private message
jerre
n00b
n00b


Joined: 31 Mar 2005
Posts: 2

PostPosted: Sun Feb 17, 2008 4:14 pm    Post subject: Reply with quote

the InitialPixmapPlacement=2 works here
Back to top
View user's profile Send private message
Bevan
n00b
n00b


Joined: 26 May 2006
Posts: 37

PostPosted: Sun Feb 17, 2008 11:29 pm    Post subject: Reply with quote

InitialPixmapPlacement=2 works for me, too. But it is not a perfect fix. I can maximize the terminal very fast now but it takes several seconds until the title bar is displayed correctly. I think this is the same amount of time, that the whole terminal needed before to redraw.

What exactly does "InitialPixmapPlacement=2"?

Edit: When not using Emerlad but GTK Window Decorator instead, there are no problems anymore. The title bar is refreshed instantly. When using Emerald, the title bar needs some seconds to refresh. This can be seen on any windows, not only terminals. Also I get some artifacts.

With InitialPixmapPlacement=1, terminals redraw very slowly again, but title bars of other windows refresh instantly.

Very strange behaviour... :?
Back to top
View user's profile Send private message
unK
l33t
l33t


Joined: 06 Feb 2007
Posts: 769

PostPosted: Mon Feb 18, 2008 5:31 pm    Post subject: Reply with quote

If you wanna have terminals with true transparecy working as fast as before, just edit ebuild for xorg-server-1.3* and delete applying "use-composite-for-unequal-depths.patch", then reemerge xorg-server and it'll be ok.
_________________
ncmpcpp - featureful ncurses based MPD client inspired by ncmpc
Back to top
View user's profile Send private message
dnadesign
Apprentice
Apprentice


Joined: 23 Dec 2006
Posts: 172
Location: Poland

PostPosted: Wed Mar 05, 2008 3:25 pm    Post subject: Reply with quote

Does anyone know if this issue has been addressed in v. 1.4.0.x?
_________________
MacBook Pro 5.1
Intel C2D 2.53 GHz, 4GB RAM DDR3, GF 9400M and 9600M GT 512MB
Back to top
View user's profile Send private message
arli
n00b
n00b


Joined: 15 Dec 2006
Posts: 10
Location: china

PostPosted: Sat Mar 08, 2008 3:19 pm    Post subject: Re: slow terminal redraw when Composite is enabled Reply with quote

flazz wrote:
When I have composite enabled in my xorg.conf redrawing (resizing, restoring, switching vitrual desktops, ...) terminals (xfce's and urxvt specifically) is very slow.

When turned off, redrawing is normal.

is there a solution to this?


me too

^-- just make a flag for thread to remember :?


Last edited by arli on Wed Mar 12, 2008 10:19 pm; edited 1 time in total
Back to top
View user's profile Send private message
dnadesign
Apprentice
Apprentice


Joined: 23 Dec 2006
Posts: 172
Location: Poland

PostPosted: Mon Mar 10, 2008 10:05 am    Post subject: Reply with quote

I have verified that on 1.4.x version of xorg-server the problem exists. Possibly the patch, that you guys mentioned earlier is already in the mainstream codebase. So for now the only possible solution is to remain on 1.3.0.x with the patch deleted.
_________________
MacBook Pro 5.1
Intel C2D 2.53 GHz, 4GB RAM DDR3, GF 9400M and 9600M GT 512MB
Back to top
View user's profile Send private message
unK
l33t
l33t


Joined: 06 Feb 2007
Posts: 769

PostPosted: Mon Mar 10, 2008 8:22 pm    Post subject: Reply with quote

dnadesign wrote:
I have verified that on 1.4.x version of xorg-server the problem exists. Possibly the patch, that you guys mentioned earlier is already in the mainstream codebase. So for now the only possible solution is to remain on 1.3.0.x with the patch deleted.

Or you can use this patch: xorg-server-1.4-revert-slow-composite-redrawing-fix.patch
It reverts bugfix which made redrawing slow. I just compiled xorg-server-1.4.0.90-r3 with this and it works smooth as before.

Note: This patch reverts security bugfix, so use it at your own risk.
_________________
ncmpcpp - featureful ncurses based MPD client inspired by ncmpc
Back to top
View user's profile Send private message
arli
n00b
n00b


Joined: 15 Dec 2006
Posts: 10
Location: china

PostPosted: Wed Mar 12, 2008 10:17 pm    Post subject: Reply with quote

in x11-base/xorg-server 1.3.0.0-r5

problem too...


Last edited by arli on Sun May 04, 2008 9:34 pm; edited 1 time in total
Back to top
View user's profile Send private message
OnoSendai
n00b
n00b


Joined: 14 Aug 2004
Posts: 55
Location: Berlin

PostPosted: Thu Mar 13, 2008 2:16 pm    Post subject: Reply with quote

natesully wrote:
I just fixed this on my new intel video card by setting "AccelMethod" to "XAA". It's EXA by default, which can't scroll for some reason. Doing this also fixed some little decoration glitches.


Wow!

Thanks alot!

I'm running x11-base/xorg-server-1.4.0.90-r3 and x11-base/xorg-x11-7.3 on my Laptop (Intel 965 / X3100)

Adding
Code:
Option       "AccelMethod" "XAA"

to the Device section fixes the scrolling and slow resize issue for me.
_________________
Wintermute was a simple cube of white light, that very simplicity suggesting extreme complexity.
Back to top
View user's profile Send private message
colchaodemola
n00b
n00b


Joined: 06 Jan 2007
Posts: 29

PostPosted: Fri Mar 21, 2008 11:49 pm    Post subject: Reply with quote

fikiz wrote:
^ ^ ^ ^
no effect for me of this command with my nvidia card.
I don't know how to check if composite is enabled and how to disable it. somebody could help me?

thanks

This fixes terminal slowness, but all other windows got slow :/

unK wrote:
dnadesign wrote:
I have verified that on 1.4.x version of xorg-server the problem exists. Possibly the patch, that you guys mentioned earlier is already in the mainstream codebase. So for now the only possible solution is to remain on 1.3.0.x with the patch deleted.

Or you can use this patch: xorg-server-1.4-revert-slow-composite-redrawing-fix.patch
It reverts bugfix which made redrawing slow. I just compiled xorg-server-1.4.0.90-r3 with this and it works smooth as before.

Note: This patch reverts security bugfix, so use it at your own risk.


URL 404 error. Any other url ?




Any more news ?
Back to top
View user's profile Send private message
count_zero
Guru
Guru


Joined: 17 May 2004
Posts: 460
Location: Little Rock, Arkansas, USA

PostPosted: Sat Mar 22, 2008 2:22 pm    Post subject: Reply with quote

Here's an ebuild that reverses the "use-composite-for-unequal-depths.patch" patch that has been causing these slowdowns with xorg-server-1.4.0.90-r3. It utilizes the patch already in the /usr/portage/x11-base/xorg-server/files/ directory, so just copy this files directory to your overlay and use this modified ebuild. It built cleanly for me, and the slowdowns are also resolved. I'm not sure the overall effect that reversing this patch will have, however, so use at your own risk.


xorg-server-1.4.0.90-r3 with "use-composite-for-unequal-depths.patch" reversed:
Code:

# Copyright 1999-2008 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
# $Header: /var/cvsroot/gentoo-x86/x11-base/xorg-server/xorg-server-1.4.0.90-r3.ebuild,v 1.2 2008/03/10 17:39:30 zlin Exp $

# Must be before x-modular eclass is inherited
#SNAPSHOT="yes"

inherit x-modular multilib

OPENGL_DIR="xorg-x11"

MESA_PN="Mesa"
MESA_PV="7.0.2"
MESA_P="${MESA_PN}-${MESA_PV}"
MESA_SRC_P="${MESA_PN}Lib-${MESA_PV}"

SRC_URI="${SRC_URI}
   mirror://sourceforge/mesa3d/${MESA_SRC_P}.tar.bz2
   http://xorg.freedesktop.org/releases/individual/xserver/${P}.tar.bz2"
DESCRIPTION="X.Org X servers"
KEYWORDS="~alpha ~amd64 ~arm ~hppa ~ia64 ~mips ~ppc ~ppc64 ~sh ~sparc ~x86 ~x86-fbsd"
IUSE_INPUT_DEVICES="
   input_devices_acecad
   input_devices_aiptek
   input_devices_calcomp
   input_devices_citron
   input_devices_digitaledge
   input_devices_dmc
   input_devices_dynapro
   input_devices_elo2300
   input_devices_elographics
   input_devices_evdev
   input_devices_fpit
   input_devices_hyperpen
   input_devices_jamstudio
   input_devices_joystick
   input_devices_keyboard
   input_devices_magellan
   input_devices_microtouch
   input_devices_mouse
   input_devices_mutouch
   input_devices_palmax
   input_devices_penmount
   input_devices_spaceorb
   input_devices_summa
   input_devices_tek4957
   input_devices_ur98
   input_devices_vmmouse
   input_devices_void

   input_devices_synaptics
   input_devices_wacom"
IUSE_VIDEO_CARDS="
   video_cards_amd
   video_cards_apm
   video_cards_ark
   video_cards_chips
   video_cards_cirrus
   video_cards_cyrix
   video_cards_dummy
   video_cards_epson
   video_cards_fbdev
   video_cards_glint
   video_cards_i128
   video_cards_i740
   video_cards_i810
   video_cards_impact
   video_cards_imstt
   video_cards_mach64
   video_cards_mga
   video_cards_neomagic
   video_cards_newport
   video_cards_nsc
   video_cards_nv
   video_cards_r128
   video_cards_radeon
   video_cards_rendition
   video_cards_s3
   video_cards_s3virge
   video_cards_savage
   video_cards_siliconmotion
   video_cards_sis
   video_cards_sisusb
   video_cards_sunbw2
   video_cards_suncg14
   video_cards_suncg3
   video_cards_suncg6
   video_cards_sunffb
   video_cards_sunleo
   video_cards_suntcx
   video_cards_tdfx
   video_cards_tga
   video_cards_trident
   video_cards_tseng
   video_cards_v4l
   video_cards_vermilion
   video_cards_vesa
   video_cards_vga
   video_cards_via
   video_cards_vmware
   video_cards_voodoo
   video_cards_xgi
   video_cards_fglrx
   video_cards_nvidia"
IUSE_SERVERS="dmx kdrive xorg"
IUSE="${IUSE_VIDEO_CARDS}
   ${IUSE_INPUT_DEVICES}
   ${IUSE_SERVERS}
   3dfx
   dri hal ipv6 minimal nptl sdl xprint"
RDEPEND="hal? ( sys-apps/hal )
   >=x11-libs/libXfont-1.3.1
   >=x11-libs/xtrans-1.0.4
   >=x11-libs/libXau-1.0.3
   >=x11-libs/libXext-1.0.2
   >=x11-libs/libX11-1.1.3
   >=x11-libs/libxkbfile-1.0.4
   >=x11-libs/libXdmcp-1.0.2
   >=x11-libs/libXmu-1.0.3
   >=x11-libs/libXrender-0.9.4
   >=x11-libs/libXi-1.1.3
   >=x11-libs/pixman-0.9.5
   media-libs/freetype
   >=media-libs/mesa-7.0.1
   media-fonts/font-adobe-75dpi
   media-fonts/font-misc-misc
   media-fonts/font-cursor-misc
   >=x11-misc/xbitmaps-1.0.1
   >=x11-misc/xkeyboard-config-0.9
   >=x11-apps/iceauth-1.0.2
   >=x11-apps/rgb-1.0.1
   >=x11-apps/xauth-1.0.2
   >=x11-apps/xinit-1.0.5
   app-admin/eselect-opengl
   >=x11-libs/libXaw-1.0.4
   >=x11-libs/libXpm-3.5.7
   >=x11-libs/libXxf86misc-1.0.1
   >=x11-libs/libXxf86vm-1.0.1
   dmx? ( >=x11-libs/libdmx-1.0.2
         >=x11-libs/libXfixes-4.0.3 )
   !minimal? ( >=x11-libs/libXtst-1.0.3
      >=x11-libs/libXres-1.0.3 )
   >=x11-libs/libxkbui-1.0.2
   >=x11-libs/liblbxutil-1.0.1
   kdrive? ( sdl? ( media-libs/libsdl ) )"
   # Xres is dmx-dependent, xkbui is xorgcfg-dependent
   # Xaw is dmx- and xorgcfg-dependent
   # Xpm is dmx- and xorgcfg-dependent, pulls in Xt
   # Xxf86misc and Xxf86vm are xorgcfg-dependent
   # liblbxutil is lbx- dependent
DEPEND="${RDEPEND}
   !net-dialup/dtrace
   >=x11-proto/randrproto-1.2.1
   >=x11-proto/renderproto-0.9.3
   >=x11-proto/fixesproto-4
   >=x11-proto/damageproto-1.1
   >=x11-proto/xextproto-7.0.2
   >=x11-proto/xproto-7.0.10
   >=x11-proto/xf86dgaproto-2.0.3
   >=x11-proto/xf86miscproto-0.9.2
   >=x11-proto/xf86rushproto-1.1.2
   >=x11-proto/xf86vidmodeproto-2.2.2
   >=x11-proto/xf86bigfontproto-1.1.2
   >=x11-proto/compositeproto-0.4
   >=x11-proto/recordproto-1.13.2
   >=x11-proto/resourceproto-1.0.2
   >=x11-proto/videoproto-2.2.2
   >=x11-proto/scrnsaverproto-1.1.0
   >=x11-proto/evieext-1.0.2
   >=x11-proto/trapproto-3.4.3
   >=x11-proto/xineramaproto-1.1-r1
   >=x11-proto/fontsproto-2.0.2
   >=x11-proto/kbproto-1.0.3
   >=x11-proto/inputproto-1.4.2.1
   >=x11-proto/bigreqsproto-1.0.2
   >=x11-proto/xcmiscproto-1.1.2
   >=x11-proto/glproto-1.4.8
   dmx? ( >=x11-proto/dmxproto-2.2.2 )
   dri? ( >=x11-proto/xf86driproto-2.0.3
      >=x11-libs/libdrm-2.3 )
   xprint? ( >=x11-proto/printproto-1.0.3
      >=x11-apps/mkfontdir-1.0.3
      >=x11-apps/mkfontscale-1.0.3
      >=x11-apps/xplsprinters-1.0.1 )"

# Drivers
PDEPEND="
   xorg? (
      input_devices_acecad? ( >=x11-drivers/xf86-input-acecad-1.1.0 )
      input_devices_aiptek? ( >=x11-drivers/xf86-input-aiptek-1.0.1 )
      input_devices_calcomp? ( >=x11-drivers/xf86-input-calcomp-1.1.1 )
      input_devices_citron? ( >=x11-drivers/xf86-input-citron-2.2.1 )
      input_devices_digitaledge? ( >=x11-drivers/xf86-input-digitaledge-1.1.0 )
      input_devices_dmc? ( >=x11-drivers/xf86-input-dmc-1.1.0 )
      input_devices_dynapro? ( >=x11-drivers/xf86-input-dynapro-1.1.1 )
      input_devices_elo2300? ( >=x11-drivers/xf86-input-elo2300-1.1.1 )
      input_devices_elographics? ( >=x11-drivers/xf86-input-elographics-1.1.0 )
      input_devices_evdev? ( >=x11-drivers/xf86-input-evdev-1.1.1 )
      input_devices_fpit? ( >=x11-drivers/xf86-input-fpit-1.1.0 )
      input_devices_hyperpen? ( >=x11-drivers/xf86-input-hyperpen-1.1.0 )
      input_devices_jamstudio? ( >=x11-drivers/xf86-input-jamstudio-1.1.0 )
      input_devices_joystick? ( >=x11-drivers/xf86-input-joystick-1.1.0 )
      input_devices_keyboard? ( >=x11-drivers/xf86-input-keyboard-1.2.0 )
      input_devices_magellan? ( >=x11-drivers/xf86-input-magellan-1.1.1 )
      input_devices_microtouch? ( >=x11-drivers/xf86-input-microtouch-1.1.1 )
      input_devices_mouse? ( >=x11-drivers/xf86-input-mouse-1.1.0 )
      input_devices_mutouch? ( >=x11-drivers/xf86-input-mutouch-1.1.0 )
      input_devices_palmax? ( >=x11-drivers/xf86-input-palmax-1.1.0 )
      input_devices_penmount? ( >=x11-drivers/xf86-input-penmount-1.2.1 )
      input_devices_spaceorb? ( >=x11-drivers/xf86-input-spaceorb-1.1.1 )
      input_devices_summa? ( >=x11-drivers/xf86-input-summa-1.1.0 )
      input_devices_tek4957? ( >=x11-drivers/xf86-input-tek4957-1.1.0 )
      input_devices_ur98? ( >=x11-drivers/xf86-input-ur98-1.1.0 )
      input_devices_vmmouse? ( >=x11-drivers/xf86-input-vmmouse-12.4.2 )
      input_devices_void? ( >=x11-drivers/xf86-input-void-1.1.0 )

      input_devices_synaptics? ( x11-drivers/synaptics )
      input_devices_wacom? ( x11-drivers/linuxwacom )

      video_cards_amd? ( >=x11-drivers/xf86-video-amd-2.7.7.0 )
      video_cards_apm? ( >=x11-drivers/xf86-video-apm-1.1.1 )
      video_cards_ark? ( >=x11-drivers/xf86-video-ark-0.6.0 )
      video_cards_chips? ( >=x11-drivers/xf86-video-chips-1.1.1 )
      video_cards_cirrus? ( >=x11-drivers/xf86-video-cirrus-1.1.0 )
      video_cards_cyrix? ( >=x11-drivers/xf86-video-cyrix-1.1.0 )
      video_cards_dummy? ( >=x11-drivers/xf86-video-dummy-0.2.0 )
      video_cards_fbdev? ( >=x11-drivers/xf86-video-fbdev-0.2.0 )
      video_cards_glint? ( >=x11-drivers/xf86-video-glint-1.1.1 )
      video_cards_i128? ( >=x11-drivers/xf86-video-i128-1.2.0 )
      video_cards_i740? ( >=x11-drivers/xf86-video-i740-1.1.0 )
      video_cards_i810? ( >=x11-drivers/xf86-video-i810-1.6.0 )
      video_cards_impact? ( >=x11-drivers/xf86-video-impact-0.2.0 )
      video_cards_imstt? ( >=x11-drivers/xf86-video-imstt-1.1.0 )
      video_cards_mach64? ( >=x11-drivers/xf86-video-ati-6.6.0 )
      video_cards_mga? ( >=x11-drivers/xf86-video-mga-1.4.1 )
      video_cards_neomagic? ( >=x11-drivers/xf86-video-neomagic-1.1.1 )
      video_cards_newport? ( >=x11-drivers/xf86-video-newport-0.2.0 )
      video_cards_nsc? ( >=x11-drivers/xf86-video-nsc-2.8.1 )
      video_cards_nv? ( >=x11-drivers/xf86-video-nv-1.1.1 )
      video_cards_r128? ( >=x11-drivers/xf86-video-ati-6.6.0 )
      video_cards_radeon? ( >=x11-drivers/xf86-video-ati-6.6.0 )
      video_cards_rendition? ( >=x11-drivers/xf86-video-rendition-4.1.0 )
      video_cards_s3? ( >=x11-drivers/xf86-video-s3-0.4.1 )
      video_cards_s3virge? ( >=x11-drivers/xf86-video-s3virge-1.9.1 )
      video_cards_savage? ( >=x11-drivers/xf86-video-savage-2.1.1 )
      video_cards_siliconmotion? ( >=x11-drivers/xf86-video-siliconmotion-1.4.1 )
      video_cards_sis? ( >=x11-drivers/xf86-video-sis-0.9.1 )
      video_cards_sisusb? ( >=x11-drivers/xf86-video-sisusb-0.8.1 )
      video_cards_sunbw2? ( >=x11-drivers/xf86-video-sunbw2-1.1.0 )
      video_cards_suncg14? ( >=x11-drivers/xf86-video-suncg14-1.1.0 )
      video_cards_suncg3? ( >=x11-drivers/xf86-video-suncg3-1.1.0 )
      video_cards_suncg6? ( >=x11-drivers/xf86-video-suncg6-1.1.0 )
      video_cards_sunffb? ( >=x11-drivers/xf86-video-sunffb-1.1.0 )
      video_cards_sunleo? ( >=x11-drivers/xf86-video-sunleo-1.1.0 )
      video_cards_suntcx? ( >=x11-drivers/xf86-video-suntcx-1.1.0 )
      video_cards_tdfx? ( >=x11-drivers/xf86-video-tdfx-1.2.1 )
      video_cards_tga? ( >=x11-drivers/xf86-video-tga-1.1.0 )
      video_cards_trident? ( >=x11-drivers/xf86-video-trident-1.2.1 )
      video_cards_tseng? ( >=x11-drivers/xf86-video-tseng-1.1.0 )
      video_cards_v4l? ( >=x11-drivers/xf86-video-v4l-0.1.1 )
      video_cards_vermilion? ( >=x11-drivers/xf86-video-vermilion-1.0.0 )
      video_cards_vesa? ( >=x11-drivers/xf86-video-vesa-1.1.0 )
      video_cards_vga? ( >=x11-drivers/xf86-video-vga-4.1.0 )
      video_cards_via? ( >=x11-drivers/xf86-video-via-0.2.1 )
      video_cards_vmware? ( >=x11-drivers/xf86-video-vmware-10.13.0 )
      video_cards_voodoo? ( >=x11-drivers/xf86-video-voodoo-1.1.0 )
      video_cards_xgi? ( >=x11-drivers/xf86-video-xgi-1.5.0 )
      video_cards_tdfx? ( 3dfx? ( >=media-libs/glide-v3-3.10 ) )
      video_cards_fglrx? ( >=x11-drivers/ati-drivers-8.433 )
      video_cards_nvidia? ( >=x11-drivers/nvidia-drivers-71.86.01 )
   )"
LICENSE="${LICENSE} MIT"

PATCHES="
   ${FILESDIR}/1.4-ia64.patch
   ${FILESDIR}/1.3.0.0-use-proc-instead-of-sys.patch
   ${FILESDIR}/1.4-fpic-libxf86config.patch
   ${FILESDIR}/1.4-document-new-font-catalogs.patch
   ${FILESDIR}/1.4-fix-dmx-build.patch
   ${FILESDIR}/1.4-fix-dmx-link.patch
   ${FILESDIR}/1.4-fix-xephyr-link.patch
   ${FILESDIR}/1.4-fix-xprint-build.patch
   ${FILESDIR}/1.4-fix-xprint-link.patch
   ${FILESDIR}/1.4-fix-kdrive-automake.patch
   ${FILESDIR}/1.4-dont-hang-openoffice.patch
   ${FILESDIR}/${PV}-clean-generated-files.patch
   ${FILESDIR}/1.4-0001-Fix-for-CVE-2007-5760-XFree86-Misc-extension-out-o.patch
   ${FILESDIR}/1.4-0002-Fix-for-CVE-2007-6428-TOG-cup-extension-memory-cor.patch
   ${FILESDIR}/1.4-0003-Fix-for-CVE-2007-6427-Xinput-extension-memory-corr.patch
   ${FILESDIR}/1.4-0004-Fix-for-CVE-2007-6429-MIT-SHM-and-EVI-extensions-i.patch
   ${FILESDIR}/1.4-0005-Fix-for-CVE-2008-0006-PCF-Font-parser-buffer-overf.patch
   ${FILESDIR}/1.4-0006-Fix-for-CVE-2007-5958-File-existence-disclosure.patch
   ${FILESDIR}/1.4-0007-CVE-2007-6429-Don-t-spuriously-reject-8bpp-shm-pix.patch
   ${FILESDIR}/1.4-0008-CVE-2007-6429-Always-test-for-size-offset-wrapping.patch
   ${FILESDIR}/1.4-0009-Don-t-break-grab-and-focus-state-for-a-window-when-r.patch
   "

pkg_setup() {
   use minimal || ensure_a_server_is_building

   # SDL only available in kdrive build
   if use kdrive && use sdl; then
      conf_opts="${conf_opts} --enable-xsdl"
   else
      conf_opts="${conf_opts} --disable-xsdl"
   fi

   # Only Xorg and Xgl support this, and we won't build Xgl
   # until it merges to trunk
   if use xorg; then
      conf_opts="${conf_opts} --with-mesa-source=${WORKDIR}/${MESA_P}"
   fi

   # localstatedir is used for the log location; we need to override the default
   # from ebuild.sh
   # sysconfdir is used for the xorg.conf location; same applies
   # --enable-install-setuid needed because sparcs default off
   CONFIGURE_OPTIONS="
      $(use_enable ipv6)
      $(use_enable dmx)
      $(use_enable kdrive)
      $(use_enable !minimal xvfb)
      $(use_enable !minimal xnest)
      $(use_enable !minimal install-libxf86config)
      $(use_enable dri)
      $(use_enable xorg)
      $(use_enable xprint)
      $(use_enable nptl glx-tls)
      $(use_enable !minimal xorgcfg)
      $(use_enable hal config-dbus)
      $(use_enable hal config-hal)
      --sysconfdir=/etc/X11
      --localstatedir=/var
      --enable-install-setuid
      --with-fontdir=/usr/share/fonts
      --with-xkb-output=/var/lib/xkb
      ${conf_opts}"

   local diemsg="You must build xorg-server and mesa with the same nptl USE setting."
   if built_with_use media-libs/mesa nptl; then
      use nptl || die "${diemsg}"
   else
      use nptl && die "${diemsg}"
   fi

   # (#121394) Causes window corruption
   filter-flags -fweb

   # Nothing else provides new enough glxtokens.h
   ewarn "Forcing on xorg-x11 for new enough glxtokens.h..."
   OLD_IMPLEM="$(eselect opengl show)"
   eselect opengl set --impl-headers ${OPENGL_DIR}
}

src_unpack() {
   x-modular_specs_check
   x-modular_dri_check
   x-modular_unpack_source
   x-modular_patch_source

   # Reverse use-composite-for-unequal-depths.patch due to slowness with composite
   EPATCH_OPTS="-R" epatch "${FILESDIR}/use-composite-for-unequal-depths.patch"

   # Clean up for ${PV}-clean-generated-files.patch
   pushd hw/xprint >/dev/null
   rm -f *-wrapper.c || die
   popd >/dev/null

   # Set up kdrive servers to build
   if use kdrive; then
      kdrive_setup
   fi

   # Make sure eautoreconf gets run if we need the autoconf/make
   # changes.
   if [[ ${SNAPSHOT} != "yes" ]]; then
      if use kdrive || use dmx || use xprint; then
         SNAPSHOT="yes"
      fi
   fi

   if use hal; then
      sed -i \
         -e "s:^\(dbusconfigdir = \).*\(dbus-1.*\):\1/etc/\2:g" \
         "${S}"/config/Makefile.am \
         || die "failed to fix DBUS config directory"
      SNAPSHOT="yes"
   fi

   x-modular_reconf_source
   #do not install xprint's Xsession.d files, we'll do it later
   if use xprint; then
      sed -e "s:install-data-am\: install-dist_xpcDATA:install-data-am\::g" \
          -i "${S}"/hw/xprint/etc/Xsession.d/Makefile.in \
          || die "sed of Xsession.d makefile failed"
   fi
}

src_install() {
   x-modular_src_install

   dynamic_libgl_install

   server_based_install

   # Install video mode files for system-config-display
   insinto /usr/share/xorg
   doins hw/xfree86/common/{extra,vesa}modes \
      || die "couldn't install extra modes"

   # Bug #151421 - this file is not built with USE="minimal"
   # Bug #151670 - this file is also not build if USE="-xorg"
   if ! use minimal &&   use xorg; then
      # Install xorg.conf.example
      insinto /etc/X11
      doins hw/xfree86/xorg.conf.example \
         || die "couldn't install xorg.conf.example"
   fi
}

pkg_postinst() {
   switch_opengl_implem

   # Bug #135544
   ewarn "Users of reduced blanking now need:"
   ewarn "   Option \"ReducedBlanking\""
   ewarn "In the relevant Monitor section(s)."
   ewarn "Make sure your reduced blanking modelines are safe!"

   echo
   ewarn "You must rebuild all drivers if upgrading from xorg-server 1.3"
   ewarn "or earlier, because the ABI changed. If you cannot start X because"
   ewarn "of module version mismatch errors, this is your problem."

   echo
   ewarn "You can generate a list of all installed packages in the x11-drivers"
   ewarn "category using this command:"
   ewarn "emerge portage-utils; qlist -I -C x11-drivers/"

   ebeep 5
   epause 10
}

pkg_postrm() {
   # Get rid of module dir to ensure opengl-update works properly
   if ! has_version x11-base/xorg-server; then
      if [[ -e ${ROOT}/usr/$(get_libdir)/xorg/modules ]]; then
         rm -rf "${ROOT}"/usr/$(get_libdir)/xorg/modules
      fi
   fi
}

kdrive_setup() {
   local card real_card disable_card kdrive_fbdev kdrive_vesa

   einfo "Removing unused kdrive drivers ..."

   # Some kdrive servers require fbdev and vesa
   kdrive_fbdev="radeon neomagic sis siliconmotion"
   # Some kdrive servers require just vesa
   kdrive_vesa="chips mach64 mga nv glint r128 via"

   for card in ${IUSE_VIDEO_CARDS}; do
      real_card=${card#video_cards_}

      # Differences between VIDEO_CARDS name and kdrive server name
      real_card=${real_card/glint/pm2}
      real_card=${real_card/radeon/ati}
      real_card=${real_card/%nv/nvidia}
      real_card=${real_card/siliconmotion/smi}
      real_card=${real_card/%sis/sis300}

      disable_card=0

      # Check whether it's a valid kdrive server before we waste time
      # on the rest of this
      if ! grep -q -o "\b${real_card}\b" "${S}"/hw/kdrive/Makefile.am; then
         continue
      fi

      if ! use ${card}; then
         if use x86; then
            # Some kdrive servers require fbdev and vesa
            for i in ${kdrive_fbdev}; do
               if use video_cards_${i}; then
                  if [[ ${real_card} = fbdev ]] \
                     || [[ ${real_card} = vesa ]]; then
                     continue 2 # Don't disable
                  fi
                  fi
            done

            # Some kdrive servers require just vesa
            for i in ${kdrive_vesa}; do
               if use video_cards_${i}; then
                  if [[ ${real_card} = vesa ]]; then
                     continue 2 # Don't disable
                  fi
               fi
            done
         fi
         disable_card=1
      # Bug #150052
      # fbdev is the only VIDEO_CARDS setting that works on non-x86
      elif ! use x86 \
         && [[ ${real_card} != fbdev ]]; then
         ewarn "  $real_card does not work on your architecture; disabling."
         disable_card=1
      fi

      if [[ $disable_card = 1 ]]; then
         ebegin "  ${real_card}"
         sed -i \
            -e "s:\b${real_card}\b::g" \
            "${S}"/hw/kdrive/Makefile.am \
            || die "sed of ${real_card} failed"
         eend
      fi

   done
}

dynamic_libgl_install() {
   # next section is to setup the dynamic libGL stuff
   ebegin "Moving GL files for dynamic switching"
      dodir /usr/$(get_libdir)/opengl/${OPENGL_DIR}/extensions
      local x=""
      for x in "${D}"/usr/$(get_libdir)/xorg/modules/extensions/libglx*; do
         if [ -f ${x} -o -L ${x} ]; then
            mv -f ${x} "${D}"/usr/$(get_libdir)/opengl/${OPENGL_DIR}/extensions
         fi
      done
   eend 0
}

server_based_install() {
   use xprint && xprint_src_install

   if ! use xorg; then
      rm "${D}"/usr/share/man/man1/Xserver.1x \
         "${D}"/usr/$(get_libdir)/xserver/SecurityPolicy \
         "${D}"/usr/$(get_libdir)/pkgconfig/xorg-server.pc \
         "${D}"/usr/share/man/man1/Xserver.1x
   fi
}

switch_opengl_implem() {
      # Switch to the xorg implementation.
      # Use new opengl-update that will not reset user selected
      # OpenGL interface ...
      echo
#      eselect opengl set --use-old ${OPENGL_DIR}
      eselect opengl set ${OLD_IMPLEM}
}

xprint_src_install() {
   # RH-style init script, we provide a wrapper
   exeinto /usr/$(get_libdir)/misc
   doexe "${S}"/hw/xprint/etc/init.d/xprint
   # Install the wrapper
   newinitd "${FILESDIR}"/xprint.init xprint
   # Install profile scripts
   insinto /etc/profile.d
   doins "${S}"/hw/xprint/etc/profile.d/xprint*
   exeinto /etc/X11/xinit/xinitrc.d
   doexe "${S}"/hw/xprint/etc/Xsession.d/92xprint-xpserverlist
   # Patch profile scripts
   sed -e "s:/etc/init.*get_xpserverlist:/usr/$(get_libdir)/misc/xprint \
      get_xpserverlist:g" -i "${D}"/etc/profile.d/xprint* \
      "${D}"/etc/X11/xinit/xinitrc.d/92xprint-xpserverlist
   # Move profile scripts, we can't touch /etc/profile.d/ in Gentoo
   dodoc "${D}"/etc/profile.d/xprint*
   rm -f "${D}"/etc/profile.d/xprint*
}

ensure_a_server_is_building() {
   for server in ${IUSE_SERVERS}; do
      use ${server} && return;
   done
   eerror "You need to specify at least one server to build."
   eerror "Valid servers are: ${IUSE_SERVERS}."
   die "No servers were specified to build."
}

_________________
"We must all hang together, or assuredly we shall all hang separately."
-Ben Franklin
Back to top
View user's profile Send private message
Display posts from previous:   
Reply to topic    Gentoo Forums Forum Index Desktop Environments All times are GMT
Goto page 1, 2  Next
Page 1 of 2

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum