From: Jan S. <th...@no...> - 2010-03-02 18:36:55
|
You should ensure in Application A, that you call XSync, or gdk_display_sync (gdk_display_get_default()) - otherwise by the time Application B accesses the Window XID, it might not yet actually exist in the X server, leading to the crash. - 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 <th...@no...> |