Hi, I write to you as the maintainer of the compiz-core package for Ubuntu.
Just got another monitor for my Dell laptop and immediately fired it up. I don't like the Xinerame/TwinView, so I configured them as two separate screens. I noticed two bugs partly in the compiz-script, and partly in the compiz engine itself. I modified the /usr/bin/compiz script to correct this. Hope you accept the changes. First bug is in the part of comparing the resolution to the max 3d texture size. When you have two screens set up, xdpyinfo and glxinfo writes out output for each screen, in which case the test faild. test (or [ .. ]) got too many arguments. I fixed it so it checks each screen. Second bug is related to the core of compiz manifested itself in that one of the screens(*) were slow to open up and resizing windows, as well as the menus were quite slow to pop up. Slow meaning ~1 sec. The other screen worked fine. The problem is described on [1] and [2] and the latter one also gives a solution: --only-current-screen I therefore implemented compiz to start a compiz.real on each screen with the option set. I kind of realize that this may rather be a work-around (treating symptoms) rather than a real bugfix - but it fixes things for me and perhaps you will investigate the matter more / file a bug report to compiz dev team. A diff is attached. Hope you find it useful. [1] http://forum.compiz-fusion.org/showthread.php?p=24407 [2] http://forum.compiz-fusion.org/showpost.php?p=32615&postcount=2 (*) I only noticed the problem on screen 0 - but I did not test it consistently long enough to say it always happens on screen 0 and never on 1. Best regards Jørn Christensen Ps.: If this mail is a bit messy, it's because I'm rather tired atm. Sorry.
241,250c241,254 < TEXTURE_LIMIT=$(glxinfo -l | grep GL_MAX_TEXTURE_SIZE | sed 's/.*=[^0-9]//g') < RESOLUTION=$(xdpyinfo | grep -i dimensions: | sed 's/[^0-9]*pixels.*(.*).*//' | sed 's/[^0-9x]*//') < VRES=$(echo $RESOLUTION | sed 's/.*x//') < HRES=$(echo $RESOLUTION | sed 's/x.*//') < verbose "Comparing resolution ($RESOLUTION) to maximum 3D texture size ($TEXTURE_LIMIT): "; < if [ $VRES -gt $TEXTURE_LIMIT ] || [ $HRES -gt $TEXTURE_LIMIT ]; then < verbose "Failed.\n" < return 1; < fi < verbose "Passed.\n" --- > # Check how many screens we've got and iterate over them > N=$(xdpyinfo | grep "number of screens" | sed 's/.*[^0-9]//g') > for i in $(seq 1 $N); do > TEXTURE_LIMIT=$(glxinfo -l | grep GL_MAX_TEXTURE_SIZE | sed 's/.*=[^0-9]//g' | awk NR==$i) > RESOLUTION=$(xdpyinfo | grep -i dimensions: | sed 's/[^0-9]*pixels.*(.*).*//' | sed 's/[^0-9x]*//' | awk NR==$i) > VRES=$(echo $RESOLUTION | sed 's/.*x//') > HRES=$(echo $RESOLUTION | sed 's/x.*//') > verbose "Comparing resolution ($RESOLUTION) to maximum 3D texture size ($TEXTURE_LIMIT): "; > if [ $VRES -gt $TEXTURE_LIMIT ] || [ $HRES -gt $TEXTURE_LIMIT ]; then > verbose "Failed.\n" > return 1; > fi > verbose "Passed.\n" > done 406c410,420 < ${COMPIZ_BIN_PATH}${COMPIZ_NAME} $COMPIZ_OPTIONS "$@" $COMPIZ_PLUGINS || exec $FALLBACKWM $FALLBACKWM_OPTIONS --- > # For each screen start a compiz-thing > DISPBASE=$(echo $DISPLAY | sed 's/\..*//') > N=$(xdpyinfo | grep "number of screens" | sed 's/.*[^0-9]//g') > for i in $(seq $N -1 1); do > if [ $i -eq 1 ]; then > export DISPLAY="$DISPBASE.$((i-1))" > > # Start #1 in foreground > ${COMPIZ_BIN_PATH}${COMPIZ_NAME} $COMPIZ_OPTIONS --only-current-screen "$@" $COMPIZ_PLUGINS || exec $FALLBACKWM $FALLBACKWM_OPTIONS > else > export DISPLAY="$DISPBASE.$((i-1))" 407a422,425 > # Start #2 - N in background (first) > ${COMPIZ_BIN_PATH}${COMPIZ_NAME} $COMPIZ_OPTIONS --only-current-screen "$@" $COMPIZ_PLUGINS & > fi > done
-- Ubuntu-motu mailing list Ubuntu-motu@lists.ubuntu.com Modify settings or unsubscribe at: https://lists.ubuntu.com/mailman/listinfo/ubuntu-motu