112 lines
3.1 KiB
C++
112 lines
3.1 KiB
C++
/*
|
|
* Copyright (C) 2017 Igalia, S.L.
|
|
*
|
|
* This library is free software; you can redistribute it and/or
|
|
* modify it under the terms of the GNU Library General Public
|
|
* License as published by the Free Software Foundation; either
|
|
* version 2 of the License, or (at your option) any later version.
|
|
*
|
|
* This library is distributed in the hope that it will be useful,
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
* Library General Public License for more details.
|
|
*
|
|
* You should have received a copy of the GNU Library General Public License
|
|
* along with this library; see the file COPYING.LIB. If not, write to
|
|
* the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
|
|
* Boston, MA 02110-1301, USA.
|
|
*/
|
|
|
|
#pragma once
|
|
|
|
#if USE(GLIB)
|
|
|
|
namespace WTF {
|
|
|
|
#if PLATFORM(GTK)
|
|
|
|
// This is a global enum to define priorities used by GLib run loop sources.
|
|
// In GLib, priorities are represented by an integer where lower values mean
|
|
// higher priority. The following macros are defined in GLib:
|
|
// G_PRIORITY_LOW = 300
|
|
// G_PRIORITY_DEFAULT_IDLE = 200
|
|
// G_PRIORITY_HIGH_IDLE = 100
|
|
// G_PRIORITY_DEFAULT = 0
|
|
// G_PRIORITY_HIGH = -100
|
|
// We don't use those macros here to avoid having to include glib header only
|
|
// for this. But we should take into account that GLib uses G_PRIORITY_DEFAULT
|
|
// for timeout sources and G_PRIORITY_DEFAULT_IDLE for idle sources.
|
|
// Changes in these priorities can have a huge impact in performance, and in
|
|
// the correctness too, so be careful when changing them.
|
|
enum RunLoopSourcePriority {
|
|
// RunLoop::dispatch().
|
|
RunLoopDispatcher = 100,
|
|
|
|
// RunLoopTimer priority by default. It can be changed with RunLoopTimer::setPriority().
|
|
RunLoopTimer = 0,
|
|
|
|
// Garbage collector timers.
|
|
JavascriptTimer = 200,
|
|
|
|
// Memory pressure monitor.
|
|
MemoryPressureHandlerTimer = -100,
|
|
|
|
// WebCore timers.
|
|
MainThreadSharedTimer = 100,
|
|
|
|
// Used for timers that discard resources like backing store, buffers, etc.
|
|
ReleaseUnusedResourcesTimer = 200,
|
|
|
|
// Rendering timer in the threaded compositor.
|
|
CompositingThreadUpdateTimer = 110,
|
|
|
|
// Layer flush.
|
|
LayerFlushTimer = 110,
|
|
|
|
// DisplayRefreshMonitor timer, should have the same value as the LayerFlushTimer.
|
|
DisplayRefreshMonitorTimer = 110,
|
|
|
|
// Rendering timer in the main thread when accelerated compositing is not used.
|
|
NonAcceleratedDrawingTimer = 100,
|
|
|
|
// Async IO network callbacks.
|
|
AsyncIONetwork = 100,
|
|
|
|
// Disk cache read callbacks.
|
|
DiskCacheRead = 100,
|
|
|
|
// Disk cache write callbacks.
|
|
DiskCacheWrite = 200,
|
|
};
|
|
|
|
#else
|
|
|
|
enum RunLoopSourcePriority {
|
|
RunLoopDispatcher = 0,
|
|
RunLoopTimer = 0,
|
|
|
|
MemoryPressureHandlerTimer = -10,
|
|
|
|
JavascriptTimer = 10,
|
|
MainThreadSharedTimer = 10,
|
|
|
|
LayerFlushTimer = 0,
|
|
DisplayRefreshMonitorTimer = 0,
|
|
|
|
CompositingThreadUpdateTimer = 0,
|
|
|
|
ReleaseUnusedResourcesTimer = 0,
|
|
|
|
AsyncIONetwork = 10,
|
|
DiskCacheRead = 10,
|
|
DiskCacheWrite = 20
|
|
};
|
|
|
|
#endif
|
|
|
|
} // namespace WTF
|
|
|
|
using WTF::RunLoopSourcePriority;
|
|
|
|
#endif // USE(GLIB)
|