[gst-devel] What could cause the error in xvimagesink (XGetWindowAttributes): X Error of failed request?

Yiliang Bao yiliangb at gmail.com
Wed Mar 3 00:16:04 CET 2010


Thank you all for the suggestions. I have tested both approaches.

1. Use gdk_display_sync (gdk_display_get_default())

Application A (which has the window) is written using QT. Here is the
procedure:

1). Application A calls uiWindow.show() to display window,
2). Call gdk_display_sync (gdk_display_get_default()) right after show(),
3). Get windowId, and send to Application B,
4). Application B call
gst_x_overlay_set_xwindow_id(GST_X_OVERLAY(m_sinkPreview), windowId);

With or without step 2), Application B can crash.

2. Use gdk_threads_enter and gdk_threads_leave

I did as suggested by Matthews and Luciana, in application B. This works.

Thanks again,
Yiliang

On Tue, Mar 2, 2010 at 12:28 PM, Tristan Matthews <tristan at sat.qc.ca> wrote:

> 2010/3/2 Tristan Matthews <tristan at sat.qc.ca>
>
>> 2010/3/2 Jan Schmidt <thaytan at noraisin.net>
>> Here's my code:
>>
>> bool handleBusMsg(GstMessage *message)
>> {
>>  if (!gst_structure_has_name(message->structure, "prepare-xwindow-id"))
>>         return false;
>>
>>     gdk_threads_enter();
>>     gst_x_overlay_set_xwindow_id(GST_X_OVERLAY(GST_MESSAGE_SRC(message)),
>> getXWindow());
>>     gdk_threads_leave();
>> }
>>
>>
> I should add, getXWindow() returns the xid which has been provided by
> Application A (the destination), and that this code lives in Application B
> (the source).
>
>
>
>>  Thanks,
>>  Tristan
>>
>>  - Jan.
>>>
>>> On Sat, 2010-02-27 at 17:23 -0800, yiliang wrote:
>>> > Hi,
>>> >
>>> > I have 2 applications. One application (application A) creates a
>>> window, and
>>> > sends the window ID to another application (application B). application
>>> B
>>> > has a gstreamer video pipeline that uses xvimagesink to display the
>>> video as
>>> > overlay in the window using the window ID provided by application A. I
>>> am
>>> > sorry if it sounds a little confusing. This is to separate UI from
>>> pipeline.
>>> >
>>> > Following function is used to configure xvimagesink with window ID:
>>> >
>>> >     gst_x_overlay_set_xwindow_id(GST_X_OVERLAY(xvimagesink), winId);
>>> >
>>> > Most of time it works fine, but sometimes I encounter the following
>>> problem,
>>> > and the application B is terminated:
>>> >
>>> > X Error of failed request:  BadWindow (invalid Window parameter)
>>> >   Major opcode of failed request:  3 (X_GetWindowAttributes)
>>> >   Resource id in failed request:  0x400016f
>>> >   Serial number of failed request:  32
>>> >   Current serial number in output stream:  33
>>> >
>>> > After some debugging, I found the error was generated in function
>>> > gst_xvimagesink_set_xwindow_id() when it called the following function:
>>> >
>>> > XGetWindowAttributes
>>> >
>>> > Could anyone give some hint how to fix this problem?
>>> >
>>> > Thanks,
>>> > Yiliang
>>> >
>>>
>>>
>>> --
>>> Jan Schmidt <thaytan at noraisin.net>
>>>
>>>
>>>
>>> ------------------------------------------------------------------------------
>>> Download Intel&#174; Parallel Studio Eval
>>> Try the new software tools for yourself. Speed compiling, find bugs
>>> proactively, and fine-tune applications for parallel performance.
>>> See why Intel Parallel Studio got high marks during beta.
>>> http://p.sf.net/sfu/intel-sw-dev
>>> _______________________________________________
>>> gstreamer-devel mailing list
>>> gstreamer-devel at lists.sourceforge.net
>>> https://lists.sourceforge.net/lists/listinfo/gstreamer-devel
>>>
>>
>>
>>
>> --
>> Tristan Matthews
>> email: tristan at sat.qc.ca
>> web: http://tristanswork.blogspot.com
>>
>
>
>
> --
> Tristan Matthews
> email: tristan at sat.qc.ca
> web: http://tristanswork.blogspot.com
>
>
> ------------------------------------------------------------------------------
> Download Intel&#174; Parallel Studio Eval
> Try the new software tools for yourself. Speed compiling, find bugs
> proactively, and fine-tune applications for parallel performance.
> See why Intel Parallel Studio got high marks during beta.
> http://p.sf.net/sfu/intel-sw-dev
> _______________________________________________
> gstreamer-devel mailing list
> gstreamer-devel at lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/gstreamer-devel
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.freedesktop.org/archives/gstreamer-devel/attachments/20100302/697af7b7/attachment.htm>


More information about the gstreamer-devel mailing list