I'm trying to use same X window for two Clutter applications that are
run as different processes. The first application obtains the stage
window ID with clutter_stage_get_xwindow and prints it to the console.
The second application uses function clutter_stage_set_xwindow_foreign
to use the same X window for both applications. However, I don't get
this working. The second application gives the following error:
-----
X Error of failed request: BadAccess (attempt to access private
resource denied)
Major opcode of failed request: 2 (X_ChangeWindowAttributes)
Serial number of failed request: 33
Current serial number in output stream: 37
-----
This error occurs in function clutter_stage_set_xwindow_foreign and
there in clutter-stage.c line 506:
-----
glXMakeCurrent(clutter_xdisplay(), priv->xwin, priv->gl_context);
-----
I'm using Clutter version 0.2.2.
According to the GLX documentation [1] a BadAccess error occurs with
glXMakeContextCurrent if the context is current to some other thread.
AFAIK the windows and not the contexts are shared here (not completely
sure about this).
I have experimented by changing Clutter to use indirect rendering but it
did not help. I did this by changing the last argument in function call
in clutter-stage.c lines 495 - 498 from True to False:
-----
priv->gl_context = glXCreateContext (clutter_xdisplay(),
priv->xvisinfo,
0,
False);
-----
So this problem occurs when OpenGL is used on the same X window by two
different processes. What is the correct way to use function
clutter_stage_set_xwindow_foreign?
References:
[1] http://www.opengl.org/documentation/specs/glx/glx1.4.pdf
--
Tommi Höynälänmaa
sähköposti / e-mail: [EMAIL PROTECTED]
kotisivu / homepage: http://www.iki.fi/tohoyn/
--
To unsubscribe send a mail to [EMAIL PROTECTED]