1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
|
#ifndef GNOME_RR_PRIVATE_H
#define GNOME_RR_PRIVATE_H
#ifdef GDK_WINDOWING_WAYLAND
#include <gdk/gdkwayland.h>
#else
enum wl_output_transform {
WL_OUTPUT_TRANSFORM_NORMAL,
WL_OUTPUT_TRANSFORM_90,
WL_OUTPUT_TRANSFORM_180,
WL_OUTPUT_TRANSFORM_270,
WL_OUTPUT_TRANSFORM_FLIPPED,
WL_OUTPUT_TRANSFORM_FLIPPED_90,
WL_OUTPUT_TRANSFORM_FLIPPED_180,
WL_OUTPUT_TRANSFORM_FLIPPED_270
};
#endif
#include "meta-xrandr-shared.h"
#include "meta-dbus-xrandr.h"
typedef struct ScreenInfo ScreenInfo;
struct ScreenInfo
{
int min_width;
int max_width;
int min_height;
int max_height;
guint serial;
GnomeRROutput ** outputs;
GnomeRRCrtc ** crtcs;
GnomeRRMode ** modes;
GnomeRRScreen * screen;
GnomeRRMode ** clone_modes;
GnomeRROutput * primary;
};
struct GnomeRRScreenPrivate
{
GdkScreen * gdk_screen;
GdkWindow * gdk_root;
ScreenInfo * info;
int init_name_watch_id;
MetaDBusDisplayConfig *proxy;
};
#define UNDEFINED_GROUP_ID 0
struct GnomeRRTile {
guint group_id;
guint flags;
guint max_horiz_tiles;
guint max_vert_tiles;
guint loc_horiz;
guint loc_vert;
guint width;
guint height;
};
typedef struct GnomeRRTile GnomeRRTile;
struct _GnomeRROutputInfoPrivate
{
char * name;
gboolean on;
int width;
int height;
int rate;
int x;
int y;
GnomeRRRotation rotation;
GnomeRRRotation available_rotations;
gboolean connected;
char * vendor;
char * product;
char * serial;
double aspect;
int pref_width;
int pref_height;
char * display_name;
char * connector_type;
gboolean primary;
gboolean underscanning;
gboolean is_tiled;
GnomeRRTile tile;
int total_tiled_width;
int total_tiled_height;
/* ptr back to info */
GnomeRRConfig *config;
};
struct _GnomeRRConfigPrivate
{
gboolean clone;
GnomeRRScreen *screen;
GnomeRROutputInfo **outputs;
};
gboolean _gnome_rr_output_connector_type_is_builtin_display (const char *connector_type);
gboolean _gnome_rr_screen_apply_configuration (GnomeRRScreen *screen,
gboolean persistent,
GVariant *crtcs,
GVariant *outputs,
GError **error);
const char * _gnome_rr_output_get_connector_type (GnomeRROutput *output);
gboolean _gnome_rr_output_get_tile_info (GnomeRROutput *output,
GnomeRRTile *tile);
gboolean _gnome_rr_output_get_tiled_display_size (GnomeRROutput *output,
int *tile_w, int *tile_h,
int *width, int *height);
#endif
|