Re: clip masks/simulating transparency

2011-05-31 Thread Xavier Bestel
On Tue, 2011-05-31 at 15:28 +1000, Amy C wrote:
 Can anyone think of an alternative way to do this (have the penguins
 walk over a screen of my choosing and restore said window after
 they've passed through, without too much flickering?

You should use compositing of an ARGB pixmap. It will only work with a
compositor but nowadays all desktop use one (Compiz/Unity,
Mutter/GnomeShell, Kwin). Compositing is implemented much more
efficiently than windows shaping.

Xav

___
xorg@lists.freedesktop.org: X.Org support
Archives: http://lists.freedesktop.org/archives/xorg
Info: http://lists.freedesktop.org/mailman/listinfo/xorg
Your subscription address: arch...@mail-archive.com


Re: clip masks/simulating transparency

2011-05-31 Thread Mag. Dr. Nikolaus Klepp
Hi!

I just wanted to say that I love the idea of what you are doing. If I get it 
right, xpenguins would then work with any DE (KDE/Gnome) without erasing the 
icont?

Nik

Am Dienstag, 31. Mai 2011 schrieb Amy C:
 Hi all,

 I've sort-of worked it out (I think??) but would still like suggestions on
 this.
 The penguins -are- being drawn using the clip mask correctly onto the
 window of my choice.

 The problem was that each penguin comprises a little animation (penguin is
 moving), and the expose event was only being sent once per animation, not
 after every single frame of the animation. Since the penguins move only a
 few pixels per animations (say 20 or so) it looked like the clip mask just
 wasn't working.

 I've modified the code to send an expose event after each frame of the
 animation is drawn (so truly after each penguin is drawn), but now (as
 expected) it looks very very flickery -- every cycle we get a XClearArea
 where the old penguin was, an XExposeEvent where the old penguin was, and a
 XCopyArea of the next frame of the animation.

 Can anyone think of an alternative way to do this (have the penguins walk
 over a screen of my choosing and restore said window after they've passed
 through, without too much flickering?) -- perhaps I can copy the relevant
 bit of background as the background of the penguin pixmap itself, although
 I think I'd need to send an XExposeEvent before I can grab the background?

 [So close! Soon I shall have penguins taking over my windows! SOON! bahaha]
 cheers
 Amy

___
xorg@lists.freedesktop.org: X.Org support
Archives: http://lists.freedesktop.org/archives/xorg
Info: http://lists.freedesktop.org/mailman/listinfo/xorg
Your subscription address: arch...@mail-archive.com


Re: clip masks/simulating transparency

2011-05-31 Thread Xavier Bestel
On Tue, 2011-05-31 at 09:58 +0200, Xavier Bestel wrote:
 On Tue, 2011-05-31 at 15:28 +1000, Amy C wrote:
  Can anyone think of an alternative way to do this (have the penguins
  walk over a screen of my choosing and restore said window after
  they've passed through, without too much flickering?
 
 You should use compositing of an ARGB pixmap. It will only work with a
 compositor but nowadays all desktop use one (Compiz/Unity,
 Mutter/GnomeShell, Kwin). Compositing is implemented much more
 efficiently than windows shaping.

My bad, I looked at the source, it doesn't use shaped windows.
Still, using composited windows per pinguin may be a win.

Xav

___
xorg@lists.freedesktop.org: X.Org support
Archives: http://lists.freedesktop.org/archives/xorg
Info: http://lists.freedesktop.org/mailman/listinfo/xorg
Your subscription address: arch...@mail-archive.com


Re: clip masks/simulating transparency

2011-05-30 Thread Amy C
Hi all,

I've sort-of worked it out (I think??) but would still like suggestions on
this.
The penguins -are- being drawn using the clip mask correctly onto the window
of my choice.

The problem was that each penguin comprises a little animation (penguin is
moving), and the expose event was only being sent once per animation, not
after every single frame of the animation. Since the penguins move only a
few pixels per animations (say 20 or so) it looked like the clip mask just
wasn't working.

I've modified the code to send an expose event after each frame of the
animation is drawn (so truly after each penguin is drawn), but now (as
expected) it looks very very flickery -- every cycle we get a XClearArea
where the old penguin was, an XExposeEvent where the old penguin was, and a
XCopyArea of the next frame of the animation.

Can anyone think of an alternative way to do this (have the penguins walk
over a screen of my choosing and restore said window after they've passed
through, without too much flickering?) -- perhaps I can copy the relevant
bit of background as the background of the penguin pixmap itself, although I
think I'd need to send an XExposeEvent before I can grab the background?

[So close! Soon I shall have penguins taking over my windows! SOON! bahaha]
cheers
Amy
___
xorg@lists.freedesktop.org: X.Org support
Archives: http://lists.freedesktop.org/archives/xorg
Info: http://lists.freedesktop.org/mailman/listinfo/xorg
Your subscription address: arch...@mail-archive.com