1 #ifndef GNOME_RR_PRIVATE_H
2 #define GNOME_RR_PRIVATE_H
3 
4 #include <X11/Xlib.h>
5 
6 #include <X11/extensions/Xrandr.h>
7 
8 #define MINIMUM_LOGICAL_SCALE_FACTOR 0.74f
9 #define MAXIMUM_LOGICAL_SCALE_FACTOR 2.0f
10 #define MINIMUM_GLOBAL_SCALE_FACTOR 1
11 #define MAXIMUM_GLOBAL_SCALE_FACTOR 2
12 
13 typedef struct ScreenInfo ScreenInfo;
14 
15 struct ScreenInfo
16 {
17     int			min_width;
18     int			max_width;
19     int			min_height;
20     int			max_height;
21 
22     XRRScreenResources *resources;
23 
24     GnomeRROutput **	outputs;
25     GnomeRRCrtc **	crtcs;
26     GnomeRRMode **	modes;
27 
28     GnomeRRScreen *	screen;
29 
30     GnomeRRMode **	clone_modes;
31 
32     RROutput            primary;
33 };
34 
35 struct GnomeRRScreenPrivate
36 {
37     GdkScreen *			gdk_screen;
38     GdkWindow *			gdk_root;
39     Display *			xdisplay;
40     Screen *			xscreen;
41     Window			xroot;
42     ScreenInfo *		info;
43     GSettings *         interface_settings;
44 
45     int				randr_event_base;
46     int				rr_major_version;
47     int				rr_minor_version;
48 
49     Atom                        connector_type_atom;
50     gboolean                    dpms_capable;
51 };
52 
53 struct GnomeRROutputInfoPrivate
54 {
55     char *		name;
56 
57     gboolean		on;
58     int			width;
59     int			height;
60     double		rate;
61     int			x;
62     int			y;
63     GnomeRRRotation	rotation;
64 
65     gboolean		connected;
66     gchar		vendor[4];
67     guint		product;
68     guint		serial;
69     double		aspect;
70     int			pref_width;
71     int			pref_height;
72     char *		display_name;
73     gboolean            primary;
74     float       scale;
75     gboolean    doublescan;
76     gboolean    interlaced;
77     gboolean    vsync;
78 };
79 
80 struct GnomeRRConfigPrivate
81 {
82   gboolean clone;
83   GnomeRRScreen *screen;
84   GnomeRROutputInfo **outputs;
85   guint base_scale;
86   gboolean auto_scale;
87 };
88 
89 gboolean _gnome_rr_output_name_is_laptop (const char *name);
90 
91 #endif
92