[gst-devel] IMPORTANT BUSSINES

Martin Soto soto at informatik.uni-kl.de
Tue Nov 30 04:55:03 CET 2004


Hi Tim,

On Tue, 2004-11-30 at 12:38, Tim Müller wrote:
...
> First of all: congratulations! This is really impressive for a 0.0.0.0.1 
> version :-)

Thanks. It's good to know that you managed to make it work, at least.

> Just some quick comments:
> 
>  * you might want to bail out in configure if pyrex is not found:
> 
>       dnl Check for Pyrex
>       AC_PATH_PROG(PYREXC, pyrexc, NOT_FOUND)
>      +if test "x$PYREX" == "xNOT_FOUND"; then
>      +  AC_MSG_ERROR(could not find pyrex)
>      +fi
>       AC_SUBST(PYREXC)

Not really, because the distribution tarball will not depend on Pyrex
(Pyrex generated files will be distributed as well). On the other hand,
I may check in autogen.sh or something. Any ideas?

> * when I start seamless, I get two windows. The DVD spins up, and the 
>    video is output to the second window. After a second or two the
>    program aborts with the usual Xlib-is-not-threadsafe error:
> 
>      The program 'seamless.py' received an X Window System error.
>      This probably reflects a bug in the program.
>      The error was 'BadDrawable (invalid Pixmap or Window parameter)'.
>        (Details: serial 148 error_code 9 request_code 141 minor_code 19)
>        (Note to programmers: normally, X errors are reported asynchronously;
>         that is, you will receive the error a while after causing it.
>         To debug your program, run it with the --sync command line
>         option to change this behavior. You can then get a meaningful
>         backtrace from your debugger if you break on the gdk_x_error()               
>         function.)

I know the problem. It seems to be a race condition between the thread
that sets up the playback window and the video playback thread itself.
It doesn't affect me that much though, because my machine is either too
slow or too fast and manages to avoid the situation most of the time. I
thought it would be the same for everyone else but...

As for a fix, the problem is that I need to know the initial real size
of the video before creating the video window. My first attempt was to
create the window with some arbitrary size and then resize it when I get
the signal from the videosink, but it wouldn't resize at all leaving me
with a funny looking display. I'll try to look into that, but probably
not before tomorrow.

> * strangely though, when I start seamless, wait for the two windows to
>    appear, then use Alt-Tab to change focus to the first window (or click
>    on it? seems to vary), then the  second window will just disappear after 
>    a second or so, and the video will continue to be output in the first
>    window and everything will work fine.

You are inducing an expose event, which in turn sets the window id again
in the videosink. It'd be great if some more knowledgeable person could
take a look. I'm sort of clueless here.

Again thanks for giving it a try,

Cheers,

M. S.





More information about the gstreamer-devel mailing list