///////////////////////////////////////////////////////////////////////////////
// Name: wx/gtk/private/threads.h
// Purpose: Wrappers for GDK threads support.
// Author: Vadim Zeitlin
// Created: 2022-09-23
// Copyright: (c) 2022 Vadim Zeitlin <vadim@wxwidgets.org>
// Licence: wxWindows licence
///////////////////////////////////////////////////////////////////////////////
#ifndef _WX_GTK_PRIVATE_THREADS_H_
#define _WX_GTK_PRIVATE_THREADS_H_
// ----------------------------------------------------------------------------
// Redefine GDK functions to avoiding deprecation warnings
// ----------------------------------------------------------------------------
wxGCC_WARNING_SUPPRESS(deprecated-declarations)
static inline void wx_gdk_threads_enter() { gdk_threads_enter(); }
#define gdk_threads_enter wx_gdk_threads_enter
static inline void wx_gdk_threads_leave() { gdk_threads_leave(); }
#define gdk_threads_leave wx_gdk_threads_leave
wxGCC_WARNING_RESTORE(deprecated-declarations)
// ----------------------------------------------------------------------------
// RAII wrapper for acquiring/leaving GDK lock in ctor/dtor
// ----------------------------------------------------------------------------
class wxGDKThreadsLock
{
public:
wxGDKThreadsLock() { gdk_threads_enter(); }
~wxGDKThreadsLock() { gdk_threads_leave(); }
wxDECLARE_NO_COPY_CLASS(wxGDKThreadsLock);
};
#endif // _WX_GTK_PRIVATE_THREADS_H_