Question concerning missing window id's after linux upgrade

Hi all,

A while ago I wrote a mediacenter-app, which basically acts as a
frontend to play mythtv-recordings, my entire dvd-library, and also does
some other stuff, none of which really important. The playout-stuff is
handled by mplayer, which connects to a Wx::Panel using the window-id
(mplayer -wid etc). The window-id was hard to find -
get_handle didn’t appear to give me the right id (even though I’ve heard
a wx-python guy say it works for him), so I just executed ‘xwininfo
-tree -name Media’, ran some regexps on that, and found the id I was
looking for. Everything worked!

Skip to 2 days ago, when I finally upgraded my ubuntu from 8.04 to 10.04
(not because I want to stay on LTS, but I had issues getting wxruby to
work on later versions). After some tweaks everything seems to work
perfectly - except the tiny detail that I don’t see anything being
played by mplayer. I get sound, so mplayer is doing its best, but all I
see is a red screen (red being the background-color for the panel
mplayer should attach to, so it’s not that abnormal).
After some testing, I stumbled upon the following. On my old ubuntu
(it’s dual boot until everything works), running xwininfo gives me
something like this:

$ xwininfo -tree -name TestCase

xwininfo: Window id: 0x32000a5 “TestCase”

Root window id: 0x255 (the root window) (has no name)

Parent window id: 0xc0011c (has no name)

  2 children:

  0x32000a8 (has no name): ()  600x400+0+0  +3+797

     1 child:

     0x32000a9 (has no name): ()  600x400+0+0  +3+797

        1 child:

        0x32000aa (has no name): ()  600x400+0+0  +3+797

           1 child:

           0x32000ab (has no name): ()  600x400+0+0  +3+797

              1 child:

              0x32000ac (has no name): ()  600x400+0+0  +3+797

                 1 child:

                 0x32000ad (has no name): ()  600x400+0+0  +3+797

                    1 child:

                    0x32000b5 (has no name): ()  400x200+-1+-1 

+2+796

                       1 child:

                       0x32000b6 (has no name): ()  400x200+0+0 

+2+796

  0x32000a6 (has no name): ()  1x1+-1+-1  +2+796

However, when I run the same command on the new ubuntu, with the exact
same TestCase-app running, I get:

$ xwininfo -tree -name TestCase

xwininfo: Window id: 0x40000a8 “TestCase”

Root window id: 0x102 (the root window) (has no name)

Parent window id: 0x2a3bc3c (has no name)

  1 child:

  0x40000a9 (has no name): ()  1x1+-1+-1  +0+50

The ‘TestCase’ application is a Wx::App in which a Wx::Frame is created,
a Panel (p1) is created with said frame as parent, and another panel
(p2) is created with p1 as parent. In the first xwininfo, I can attach
mplayer to p2 using 0x32000b6, to p1 using 0x32000ad, and to the frame,
using 0x32000a5. Why those and what all the other children etc. are? I
have absolutely no idea. But it works.

Using the second xwininfo, I only have 2 ‘viable’ id’s, the first one
being of the frame (which works - I can attach mplayer to the frame and
it will work, but that’s not what I want to do), and the second one
being the id my app tries to use, with aforementioned results.

Long story short: something has changed in either wx or
X/gnome/whatever, and I’m wondering whether there’s another way to let
mplayer connect with a Wx::Panel, or whether I should drop the
upgrade-plan altogether and stick to 8.04?

thanks in advance!

tom