forked from AuroraMiddleware/gtk
9767b3a97e
Currently we're using a display link that is for all active displays which is just the display server trying to find some timings that try to overlap as many as possible. That was fine for a prototype, but we really need to do better for situations with mixed frame rate (such as 60hz and 120hz promotion displays). Additionally, the 144hz external monitor I have will never reach 144hz using the current design. This is just the first step in changing this, but the goal is to have one of these attached to each GdkMacosMonitor which we can then use to thaw surfaces specific to that monitor.
51 lines
1.5 KiB
C
51 lines
1.5 KiB
C
/* gdkdisplaylinksource.h
|
|
*
|
|
* Copyright (C) 2015 Christian Hergert <christian@hergert.me>
|
|
*
|
|
* This library is free software; you can redistribute it and/or
|
|
* modify it under the terms of the GNU Lesser 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
|
|
* Lesser General Public License for more details.
|
|
*
|
|
* You should have received a copy of the GNU Lesser General Public
|
|
* License along with this library. If not, see <http://www.gnu.org/licenses/>.
|
|
*
|
|
* Authors:
|
|
* Christian Hergert <christian@hergert.me>
|
|
*/
|
|
|
|
#ifndef GDK_DISPLAY_LINK_SOURCE_H
|
|
#define GDK_DISPLAY_LINK_SOURCE_H
|
|
|
|
#include <glib.h>
|
|
|
|
#include <QuartzCore/QuartzCore.h>
|
|
|
|
G_BEGIN_DECLS
|
|
|
|
typedef struct
|
|
{
|
|
GSource source;
|
|
|
|
CGDirectDisplayID display_id;
|
|
CVDisplayLinkRef display_link;
|
|
gint64 refresh_interval;
|
|
guint refresh_rate;
|
|
|
|
volatile gint64 presentation_time;
|
|
volatile guint needs_dispatch;
|
|
} GdkDisplayLinkSource;
|
|
|
|
GSource *gdk_display_link_source_new (CGDirectDisplayID display_id);
|
|
void gdk_display_link_source_pause (GdkDisplayLinkSource *source);
|
|
void gdk_display_link_source_unpause (GdkDisplayLinkSource *source);
|
|
|
|
G_END_DECLS
|
|
|
|
#endif /* GDK_DISPLAY_LINK_SOURCE_H */
|