LCL-GTK2: Fix PeekMessage, check if g_main_context_acquire returns True. Issue #37406.

git-svn-id: trunk@63655 -
This commit is contained in:
juha 2020-07-26 07:42:32 +00:00
parent 7ed8696762
commit 4f228a7831

View File

@ -142,28 +142,29 @@ end;
procedure TGtkMessageQueue.Lock;
begin
{$IFDEF USE_GTK_MAIN_OLD_ITERATION}
{$IFDEF USE_GTK_MAIN_OLD_ITERATION}
if InterlockedIncrement(fLock)=1 then
EnterCriticalsection(FCritSec);
{$ELSE}
{$ELSE}
if GetCurrentThreadId = MainThreadID then
g_main_context_acquire(FMainContext)
repeat
until g_main_context_acquire(FMainContext) // This can return False.
else
EnterCriticalsection(FCritSec);
{$ENDIF}
{$ENDIF}
end;
procedure TGtkMessageQueue.UnLock;
begin
{$IFDEF USE_GTK_MAIN_OLD_ITERATION}
{$IFDEF USE_GTK_MAIN_OLD_ITERATION}
if InterlockedDecrement(fLock)=0 then
LeaveCriticalsection(FCritSec);
{$ELSE}
{$ELSE}
if GetCurrentThreadId = MainThreadID then
g_main_context_release(FMainContext)
else
LeaveCriticalsection(FCritSec)
{$ENDIF}
{$ENDIF}
end;
{------------------------------------------------------------------------------