[Lazarus] blank window
Henry Vermaak
henry.vermaak at gmail.com
Mon Jan 30 17:19:42 CET 2012
On 26/01/12 17:34, Henry Vermaak wrote:
> On 26/01/12 16:56, Mattias Gaertner wrote:
>>
>> Henry Vermaak <henry.vermaak at gmail.com> hat am 26. Januar 2012 um 17:21
>> geschrieben:
>> >
>> > Perhaps a thread problem?
>>
>> Maybe.
>>
>> Please add the unit cmem as first unit in ide/lazarus.pp and try again.
>
> That didn't make a difference, unfortunately.
I started looking into what changed for the "new iteration" code and
came across gtk2msgqueue.pp. I saw a comment that TGtkMessageQueue is
supposed to be thread safe (presumably for PostMessage), but it appears
that it isn't (despite the critical section in the old code, since a
lock variable is checked first, presumably to handle nested locks). The
new code is even worse: g_main_context_acquire doesn't block and return
value isn't checked, so it seems rather pointless. Why have a "lock"
method that doesn't actually lock? I'd imagine the only reason that
this doesn't break really badly is that acquiring the context seems
unnecessary, since the help for g_main_context_acquire says:
You must be the owner of a context before you can call
g_main_context_prepare(), g_main_context_query(),
g_main_context_check(), g_main_context_dispatch().
But none of those functions are called anywhere. What's going on here?
I can see that the message queue can get pretty screwed up when
someone uses PostMessage.
Ludo's suggestion to remove the gdk_threads_init and the
gdk_treads_enter/leave calls works, though.
Henry
More information about the Lazarus
mailing list