[Interest] glGetString from QML-based Wayland compositor
Samuel Rødal
samuel.rodal at digia.com
Tue Jan 8 08:17:58 CET 2013
On 01/07/2013 08:22 PM, Pier Luigi wrote:
> 2013/1/2 Samuel Rødal <samuel.rodal at digia.com>:
>> On 12/28/2012 09:53 AM, Pier Luigi wrote:
>>>
>>> However glGetString() always return NULL, I call it from the
>>> sceneGraphInitialized() slot and I noticed that despite
>>> openglContext() returns a valid pointer,
>>> QOpenGLContext::currentContext() is 0.
>>>
>>> Someone has an idea on what I'm doing wrong?
>>
>> On which thread do you execute the slot connected to
>> sceneGraphInitialized() ? The scene graph might run on a separate thread
>> from the main UI thread, and the QOpenGLContext will then be made
>> current there.
>
> I first tried to use glGetString() from main after the compositor
> creation but that should be a different thread than the rendering
> thead:
>
> https://github.com/hawaii-desktop/greenisland/blob/master/src/greenisland/main.cpp
>
> Then I tried to connect the signal on the QQuickView subclass constructor to a
> private slot.
> The slot should be called from the rendering thread, giving me access
> to the context but it doesn't seem to happen.
The QQuickView exists in the main thread, so if you want the slot that
you connect to the sceneGraphInitialized() signal to be executed on the
rendering thread you need to make the connection a Qt::DirectConnection
by passing that as the final argument to connect. The default will
otherwise be Qt::QueuedConnection and the slot will still be executed on
the main thread.
--
Samuel
More information about the Interest
mailing list