mirror of
https://github.com/brl/mutter.git
synced 2024-11-23 00:20:42 -05:00
monitor: Don't use wl_output_transform in our APIs
Invent our own API so we can build without Wayland headers.
This commit is contained in:
parent
d7d8c92a9a
commit
eb952819c2
@ -60,7 +60,7 @@ typedef struct {
|
|||||||
gboolean enabled;
|
gboolean enabled;
|
||||||
MetaRectangle rect;
|
MetaRectangle rect;
|
||||||
float refresh_rate;
|
float refresh_rate;
|
||||||
enum wl_output_transform transform;
|
MetaMonitorTransform transform;
|
||||||
|
|
||||||
gboolean is_primary;
|
gboolean is_primary;
|
||||||
gboolean is_presentation;
|
gboolean is_presentation;
|
||||||
@ -656,20 +656,20 @@ handle_text (GMarkupParseContext *context,
|
|||||||
else if (strcmp (parser->output_field, "rotation") == 0)
|
else if (strcmp (parser->output_field, "rotation") == 0)
|
||||||
{
|
{
|
||||||
if (strncmp (text, "normal", text_len) == 0)
|
if (strncmp (text, "normal", text_len) == 0)
|
||||||
parser->output.transform = WL_OUTPUT_TRANSFORM_NORMAL;
|
parser->output.transform = META_MONITOR_TRANSFORM_NORMAL;
|
||||||
else if (strncmp (text, "left", text_len) == 0)
|
else if (strncmp (text, "left", text_len) == 0)
|
||||||
parser->output.transform = WL_OUTPUT_TRANSFORM_90;
|
parser->output.transform = META_MONITOR_TRANSFORM_90;
|
||||||
else if (strncmp (text, "upside_down", text_len) == 0)
|
else if (strncmp (text, "upside_down", text_len) == 0)
|
||||||
parser->output.transform = WL_OUTPUT_TRANSFORM_180;
|
parser->output.transform = META_MONITOR_TRANSFORM_180;
|
||||||
else if (strncmp (text, "right", text_len) == 0)
|
else if (strncmp (text, "right", text_len) == 0)
|
||||||
parser->output.transform = WL_OUTPUT_TRANSFORM_270;
|
parser->output.transform = META_MONITOR_TRANSFORM_270;
|
||||||
else
|
else
|
||||||
g_set_error (error, G_MARKUP_ERROR, G_MARKUP_ERROR_INVALID_CONTENT,
|
g_set_error (error, G_MARKUP_ERROR, G_MARKUP_ERROR_INVALID_CONTENT,
|
||||||
"Invalid rotation type %.*s", (int)text_len, text);
|
"Invalid rotation type %.*s", (int)text_len, text);
|
||||||
}
|
}
|
||||||
else if (strcmp (parser->output_field, "reflect_x") == 0)
|
else if (strcmp (parser->output_field, "reflect_x") == 0)
|
||||||
parser->output.transform += read_bool (text, text_len, error) ?
|
parser->output.transform += read_bool (text, text_len, error) ?
|
||||||
WL_OUTPUT_TRANSFORM_FLIPPED : 0;
|
META_MONITOR_TRANSFORM_FLIPPED : 0;
|
||||||
else if (strcmp (parser->output_field, "reflect_y") == 0)
|
else if (strcmp (parser->output_field, "reflect_y") == 0)
|
||||||
{
|
{
|
||||||
/* FIXME (look at the rotation map in monitor.c) */
|
/* FIXME (look at the rotation map in monitor.c) */
|
||||||
@ -1115,7 +1115,7 @@ make_default_config (MetaMonitorConfig *self,
|
|||||||
ret->outputs[0].rect.width = outputs[0].preferred_mode->width;
|
ret->outputs[0].rect.width = outputs[0].preferred_mode->width;
|
||||||
ret->outputs[0].rect.height = outputs[0].preferred_mode->height;
|
ret->outputs[0].rect.height = outputs[0].preferred_mode->height;
|
||||||
ret->outputs[0].refresh_rate = outputs[0].preferred_mode->refresh_rate;
|
ret->outputs[0].refresh_rate = outputs[0].preferred_mode->refresh_rate;
|
||||||
ret->outputs[0].transform = WL_OUTPUT_TRANSFORM_NORMAL;
|
ret->outputs[0].transform = META_MONITOR_TRANSFORM_NORMAL;
|
||||||
ret->outputs[0].is_primary = TRUE;
|
ret->outputs[0].is_primary = TRUE;
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
@ -1167,7 +1167,7 @@ make_default_config (MetaMonitorConfig *self,
|
|||||||
ret->outputs[j].rect.width = outputs[0].preferred_mode->width;
|
ret->outputs[j].rect.width = outputs[0].preferred_mode->width;
|
||||||
ret->outputs[j].rect.height = outputs[0].preferred_mode->height;
|
ret->outputs[j].rect.height = outputs[0].preferred_mode->height;
|
||||||
ret->outputs[j].refresh_rate = outputs[0].preferred_mode->refresh_rate;
|
ret->outputs[j].refresh_rate = outputs[0].preferred_mode->refresh_rate;
|
||||||
ret->outputs[j].transform = WL_OUTPUT_TRANSFORM_NORMAL;
|
ret->outputs[j].transform = META_MONITOR_TRANSFORM_NORMAL;
|
||||||
ret->outputs[j].is_primary = FALSE;
|
ret->outputs[j].is_primary = FALSE;
|
||||||
ret->outputs[j].is_presentation = FALSE;
|
ret->outputs[j].is_presentation = FALSE;
|
||||||
}
|
}
|
||||||
@ -1202,7 +1202,7 @@ make_default_config (MetaMonitorConfig *self,
|
|||||||
ret->outputs[i].rect.width = output->preferred_mode->width;
|
ret->outputs[i].rect.width = output->preferred_mode->width;
|
||||||
ret->outputs[i].rect.height = output->preferred_mode->height;
|
ret->outputs[i].rect.height = output->preferred_mode->height;
|
||||||
ret->outputs[i].refresh_rate = output->preferred_mode->refresh_rate;
|
ret->outputs[i].refresh_rate = output->preferred_mode->refresh_rate;
|
||||||
ret->outputs[i].transform = WL_OUTPUT_TRANSFORM_NORMAL;
|
ret->outputs[i].transform = META_MONITOR_TRANSFORM_NORMAL;
|
||||||
ret->outputs[i].is_primary = (output == primary);
|
ret->outputs[i].is_primary = (output == primary);
|
||||||
|
|
||||||
/* Disable outputs that would go beyond framebuffer limits */
|
/* Disable outputs that would go beyond framebuffer limits */
|
||||||
@ -1250,7 +1250,7 @@ ensure_at_least_one_output (MetaMonitorConfig *self,
|
|||||||
ret->outputs[i].rect.width = output->preferred_mode->width;
|
ret->outputs[i].rect.width = output->preferred_mode->width;
|
||||||
ret->outputs[i].rect.height = output->preferred_mode->height;
|
ret->outputs[i].rect.height = output->preferred_mode->height;
|
||||||
ret->outputs[i].refresh_rate = output->preferred_mode->refresh_rate;
|
ret->outputs[i].refresh_rate = output->preferred_mode->refresh_rate;
|
||||||
ret->outputs[i].transform = WL_OUTPUT_TRANSFORM_NORMAL;
|
ret->outputs[i].transform = META_MONITOR_TRANSFORM_NORMAL;
|
||||||
ret->outputs[i].is_primary = TRUE;
|
ret->outputs[i].is_primary = TRUE;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@ -1512,7 +1512,7 @@ meta_monitor_config_save (MetaMonitorConfig *self)
|
|||||||
output->rect.x,
|
output->rect.x,
|
||||||
output->rect.y,
|
output->rect.y,
|
||||||
rotation_map[output->transform & 0x3],
|
rotation_map[output->transform & 0x3],
|
||||||
output->transform >= WL_OUTPUT_TRANSFORM_FLIPPED ? "yes" : "no",
|
output->transform >= META_MONITOR_TRANSFORM_FLIPPED ? "yes" : "no",
|
||||||
output->is_primary ? "yes" : "no",
|
output->is_primary ? "yes" : "no",
|
||||||
output->is_presentation ? "yes" : "no");
|
output->is_presentation ? "yes" : "no");
|
||||||
}
|
}
|
||||||
@ -1621,13 +1621,13 @@ output_supports_mode (MetaOutput *output,
|
|||||||
}
|
}
|
||||||
|
|
||||||
static gboolean
|
static gboolean
|
||||||
crtc_assignment_assign (CrtcAssignment *assign,
|
crtc_assignment_assign (CrtcAssignment *assign,
|
||||||
MetaCRTC *crtc,
|
MetaCRTC *crtc,
|
||||||
MetaMonitorMode *mode,
|
MetaMonitorMode *mode,
|
||||||
int x,
|
int x,
|
||||||
int y,
|
int y,
|
||||||
enum wl_output_transform transform,
|
MetaMonitorTransform transform,
|
||||||
MetaOutput *output)
|
MetaOutput *output)
|
||||||
{
|
{
|
||||||
MetaCRTCInfo *info = g_hash_table_lookup (assign->info, crtc);
|
MetaCRTCInfo *info = g_hash_table_lookup (assign->info, crtc);
|
||||||
|
|
||||||
|
@ -27,7 +27,7 @@
|
|||||||
|
|
||||||
#include "meta-monitor-manager-dummy.h"
|
#include "meta-monitor-manager-dummy.h"
|
||||||
|
|
||||||
#define ALL_WL_TRANSFORMS ((1 << (WL_OUTPUT_TRANSFORM_FLIPPED_270 + 1)) - 1)
|
#define ALL_TRANSFORMS ((1 << (META_MONITOR_TRANSFORM_FLIPPED_270 + 1)) - 1)
|
||||||
|
|
||||||
struct _MetaMonitorManagerDummy
|
struct _MetaMonitorManagerDummy
|
||||||
{
|
{
|
||||||
@ -66,8 +66,8 @@ meta_monitor_manager_dummy_read_current (MetaMonitorManager *manager)
|
|||||||
manager->crtcs[0].rect.width = manager->modes[0].width;
|
manager->crtcs[0].rect.width = manager->modes[0].width;
|
||||||
manager->crtcs[0].rect.height = manager->modes[0].height;
|
manager->crtcs[0].rect.height = manager->modes[0].height;
|
||||||
manager->crtcs[0].current_mode = &manager->modes[0];
|
manager->crtcs[0].current_mode = &manager->modes[0];
|
||||||
manager->crtcs[0].transform = WL_OUTPUT_TRANSFORM_NORMAL;
|
manager->crtcs[0].transform = META_MONITOR_TRANSFORM_NORMAL;
|
||||||
manager->crtcs[0].all_transforms = ALL_WL_TRANSFORMS;
|
manager->crtcs[0].all_transforms = ALL_TRANSFORMS;
|
||||||
manager->crtcs[0].is_dirty = FALSE;
|
manager->crtcs[0].is_dirty = FALSE;
|
||||||
manager->crtcs[0].logical_monitor = NULL;
|
manager->crtcs[0].logical_monitor = NULL;
|
||||||
|
|
||||||
|
@ -477,7 +477,7 @@ meta_monitor_manager_handle_get_resources (MetaDBusDisplayConfig *skeleton,
|
|||||||
GVariantBuilder transforms;
|
GVariantBuilder transforms;
|
||||||
|
|
||||||
g_variant_builder_init (&transforms, G_VARIANT_TYPE ("au"));
|
g_variant_builder_init (&transforms, G_VARIANT_TYPE ("au"));
|
||||||
for (j = 0; j <= WL_OUTPUT_TRANSFORM_FLIPPED_270; j++)
|
for (j = 0; j <= META_MONITOR_TRANSFORM_FLIPPED_270; j++)
|
||||||
if (crtc->all_transforms & (1 << j))
|
if (crtc->all_transforms & (1 << j))
|
||||||
g_variant_builder_add (&transforms, "u", j);
|
g_variant_builder_add (&transforms, "u", j);
|
||||||
|
|
||||||
@ -755,8 +755,8 @@ meta_monitor_manager_handle_apply_configuration (MetaDBusDisplayConfig *skeleto
|
|||||||
crtc_info->y = 0;
|
crtc_info->y = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (transform < WL_OUTPUT_TRANSFORM_NORMAL ||
|
if (transform < META_MONITOR_TRANSFORM_NORMAL ||
|
||||||
transform > WL_OUTPUT_TRANSFORM_FLIPPED_270 ||
|
transform > META_MONITOR_TRANSFORM_FLIPPED_270 ||
|
||||||
((crtc->all_transforms & (1 << transform)) == 0))
|
((crtc->all_transforms & (1 << transform)) == 0))
|
||||||
{
|
{
|
||||||
g_dbus_method_invocation_return_error (invocation, G_DBUS_ERROR,
|
g_dbus_method_invocation_return_error (invocation, G_DBUS_ERROR,
|
||||||
|
@ -42,7 +42,6 @@
|
|||||||
#include <meta/screen.h>
|
#include <meta/screen.h>
|
||||||
#include "stack-tracker.h"
|
#include "stack-tracker.h"
|
||||||
#include "ui.h"
|
#include "ui.h"
|
||||||
#include <wayland-server.h>
|
|
||||||
|
|
||||||
#include "meta-display-config-shared.h"
|
#include "meta-display-config-shared.h"
|
||||||
#include "meta-dbus-display-config.h"
|
#include "meta-dbus-display-config.h"
|
||||||
@ -60,6 +59,17 @@ typedef struct _MetaMonitorInfo MetaMonitorInfo;
|
|||||||
typedef struct _MetaCRTCInfo MetaCRTCInfo;
|
typedef struct _MetaCRTCInfo MetaCRTCInfo;
|
||||||
typedef struct _MetaOutputInfo MetaOutputInfo;
|
typedef struct _MetaOutputInfo MetaOutputInfo;
|
||||||
|
|
||||||
|
typedef enum {
|
||||||
|
META_MONITOR_TRANSFORM_NORMAL,
|
||||||
|
META_MONITOR_TRANSFORM_90,
|
||||||
|
META_MONITOR_TRANSFORM_180,
|
||||||
|
META_MONITOR_TRANSFORM_270,
|
||||||
|
META_MONITOR_TRANSFORM_FLIPPED,
|
||||||
|
META_MONITOR_TRANSFORM_FLIPPED_90,
|
||||||
|
META_MONITOR_TRANSFORM_FLIPPED_180,
|
||||||
|
META_MONITOR_TRANSFORM_FLIPPED_270,
|
||||||
|
} MetaMonitorTransform;
|
||||||
|
|
||||||
struct _MetaOutput
|
struct _MetaOutput
|
||||||
{
|
{
|
||||||
/* The CRTC driving this output, NULL if the output is not enabled */
|
/* The CRTC driving this output, NULL if the output is not enabled */
|
||||||
@ -114,7 +124,7 @@ struct _MetaCRTC
|
|||||||
glong crtc_id;
|
glong crtc_id;
|
||||||
MetaRectangle rect;
|
MetaRectangle rect;
|
||||||
MetaMonitorMode *current_mode;
|
MetaMonitorMode *current_mode;
|
||||||
enum wl_output_transform transform;
|
MetaMonitorTransform transform;
|
||||||
unsigned int all_transforms;
|
unsigned int all_transforms;
|
||||||
|
|
||||||
/* Only used to build the logical configuration
|
/* Only used to build the logical configuration
|
||||||
@ -185,7 +195,7 @@ struct _MetaCRTCInfo {
|
|||||||
MetaMonitorMode *mode;
|
MetaMonitorMode *mode;
|
||||||
int x;
|
int x;
|
||||||
int y;
|
int y;
|
||||||
enum wl_output_transform transform;
|
MetaMonitorTransform transform;
|
||||||
GPtrArray *outputs;
|
GPtrArray *outputs;
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -339,7 +349,7 @@ gboolean meta_monitor_manager_has_hotplug_mode_update (MetaMonitorMana
|
|||||||
/* Returns true if transform causes width and height to be inverted
|
/* Returns true if transform causes width and height to be inverted
|
||||||
This is true for the odd transforms in the enum */
|
This is true for the odd transforms in the enum */
|
||||||
static inline gboolean
|
static inline gboolean
|
||||||
meta_monitor_transform_is_rotated (enum wl_output_transform transform)
|
meta_monitor_transform_is_rotated (MetaMonitorTransform transform)
|
||||||
{
|
{
|
||||||
return (transform % 2);
|
return (transform % 2);
|
||||||
}
|
}
|
||||||
|
@ -40,8 +40,6 @@
|
|||||||
#include <meta/errors.h>
|
#include <meta/errors.h>
|
||||||
#include "edid.h"
|
#include "edid.h"
|
||||||
|
|
||||||
#define ALL_WL_TRANSFORMS ((1 << (WL_OUTPUT_TRANSFORM_FLIPPED_270 + 1)) - 1)
|
|
||||||
|
|
||||||
typedef struct {
|
typedef struct {
|
||||||
drmModeConnector *connector;
|
drmModeConnector *connector;
|
||||||
|
|
||||||
@ -363,9 +361,9 @@ meta_monitor_manager_kms_read_current (MetaMonitorManager *manager)
|
|||||||
meta_crtc->rect.width = crtc->width;
|
meta_crtc->rect.width = crtc->width;
|
||||||
meta_crtc->rect.height = crtc->height;
|
meta_crtc->rect.height = crtc->height;
|
||||||
meta_crtc->is_dirty = FALSE;
|
meta_crtc->is_dirty = FALSE;
|
||||||
meta_crtc->transform = WL_OUTPUT_TRANSFORM_NORMAL;
|
meta_crtc->transform = META_MONITOR_TRANSFORM_NORMAL;
|
||||||
/* FIXME: implement! */
|
/* FIXME: implement! */
|
||||||
meta_crtc->all_transforms = 1 << WL_OUTPUT_TRANSFORM_NORMAL;
|
meta_crtc->all_transforms = 1 << META_MONITOR_TRANSFORM_NORMAL;
|
||||||
|
|
||||||
if (crtc->mode_valid)
|
if (crtc->mode_valid)
|
||||||
{
|
{
|
||||||
|
@ -42,7 +42,7 @@
|
|||||||
#include "edid.h"
|
#include "edid.h"
|
||||||
#include "meta-monitor-config.h"
|
#include "meta-monitor-config.h"
|
||||||
|
|
||||||
#define ALL_WL_TRANSFORMS ((1 << (WL_OUTPUT_TRANSFORM_FLIPPED_270 + 1)) - 1)
|
#define ALL_TRANSFORMS ((1 << (META_MONITOR_TRANSFORM_FLIPPED_270 + 1)) - 1)
|
||||||
|
|
||||||
/* Look for DPI_FALLBACK in:
|
/* Look for DPI_FALLBACK in:
|
||||||
* http://git.gnome.org/browse/gnome-settings-daemon/tree/plugins/xsettings/gsd-xsettings-manager.c
|
* http://git.gnome.org/browse/gnome-settings-daemon/tree/plugins/xsettings/gsd-xsettings-manager.c
|
||||||
@ -67,31 +67,31 @@ struct _MetaMonitorManagerXrandrClass
|
|||||||
|
|
||||||
G_DEFINE_TYPE (MetaMonitorManagerXrandr, meta_monitor_manager_xrandr, META_TYPE_MONITOR_MANAGER);
|
G_DEFINE_TYPE (MetaMonitorManagerXrandr, meta_monitor_manager_xrandr, META_TYPE_MONITOR_MANAGER);
|
||||||
|
|
||||||
static enum wl_output_transform
|
static MetaMonitorTransform
|
||||||
wl_transform_from_xrandr (Rotation rotation)
|
meta_monitor_transform_from_xrandr (Rotation rotation)
|
||||||
{
|
{
|
||||||
static const enum wl_output_transform y_reflected_map[4] = {
|
static const MetaMonitorTransform y_reflected_map[4] = {
|
||||||
WL_OUTPUT_TRANSFORM_FLIPPED_180,
|
META_MONITOR_TRANSFORM_FLIPPED_180,
|
||||||
WL_OUTPUT_TRANSFORM_FLIPPED_90,
|
META_MONITOR_TRANSFORM_FLIPPED_90,
|
||||||
WL_OUTPUT_TRANSFORM_FLIPPED,
|
META_MONITOR_TRANSFORM_FLIPPED,
|
||||||
WL_OUTPUT_TRANSFORM_FLIPPED_270
|
META_MONITOR_TRANSFORM_FLIPPED_270
|
||||||
};
|
};
|
||||||
enum wl_output_transform ret;
|
MetaMonitorTransform ret;
|
||||||
|
|
||||||
switch (rotation & 0x7F)
|
switch (rotation & 0x7F)
|
||||||
{
|
{
|
||||||
default:
|
default:
|
||||||
case RR_Rotate_0:
|
case RR_Rotate_0:
|
||||||
ret = WL_OUTPUT_TRANSFORM_NORMAL;
|
ret = META_MONITOR_TRANSFORM_NORMAL;
|
||||||
break;
|
break;
|
||||||
case RR_Rotate_90:
|
case RR_Rotate_90:
|
||||||
ret = WL_OUTPUT_TRANSFORM_90;
|
ret = META_MONITOR_TRANSFORM_90;
|
||||||
break;
|
break;
|
||||||
case RR_Rotate_180:
|
case RR_Rotate_180:
|
||||||
ret = WL_OUTPUT_TRANSFORM_180;
|
ret = META_MONITOR_TRANSFORM_180;
|
||||||
break;
|
break;
|
||||||
case RR_Rotate_270:
|
case RR_Rotate_270:
|
||||||
ret = WL_OUTPUT_TRANSFORM_270;
|
ret = META_MONITOR_TRANSFORM_270;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -105,35 +105,35 @@ wl_transform_from_xrandr (Rotation rotation)
|
|||||||
|
|
||||||
#define ALL_ROTATIONS (RR_Rotate_0 | RR_Rotate_90 | RR_Rotate_180 | RR_Rotate_270)
|
#define ALL_ROTATIONS (RR_Rotate_0 | RR_Rotate_90 | RR_Rotate_180 | RR_Rotate_270)
|
||||||
|
|
||||||
static unsigned int
|
static MetaMonitorTransform
|
||||||
wl_transform_from_xrandr_all (Rotation rotation)
|
meta_monitor_transform_from_xrandr_all (Rotation rotation)
|
||||||
{
|
{
|
||||||
unsigned ret;
|
unsigned ret;
|
||||||
|
|
||||||
/* Handle the common cases first (none or all) */
|
/* Handle the common cases first (none or all) */
|
||||||
if (rotation == 0 || rotation == RR_Rotate_0)
|
if (rotation == 0 || rotation == RR_Rotate_0)
|
||||||
return (1 << WL_OUTPUT_TRANSFORM_NORMAL);
|
return (1 << META_MONITOR_TRANSFORM_NORMAL);
|
||||||
|
|
||||||
/* All rotations and one reflection -> all of them by composition */
|
/* All rotations and one reflection -> all of them by composition */
|
||||||
if ((rotation & ALL_ROTATIONS) &&
|
if ((rotation & ALL_ROTATIONS) &&
|
||||||
((rotation & RR_Reflect_X) || (rotation & RR_Reflect_Y)))
|
((rotation & RR_Reflect_X) || (rotation & RR_Reflect_Y)))
|
||||||
return ALL_WL_TRANSFORMS;
|
return ALL_TRANSFORMS;
|
||||||
|
|
||||||
ret = 1 << WL_OUTPUT_TRANSFORM_NORMAL;
|
ret = 1 << META_MONITOR_TRANSFORM_NORMAL;
|
||||||
if (rotation & RR_Rotate_90)
|
if (rotation & RR_Rotate_90)
|
||||||
ret |= 1 << WL_OUTPUT_TRANSFORM_90;
|
ret |= 1 << META_MONITOR_TRANSFORM_90;
|
||||||
if (rotation & RR_Rotate_180)
|
if (rotation & RR_Rotate_180)
|
||||||
ret |= 1 << WL_OUTPUT_TRANSFORM_180;
|
ret |= 1 << META_MONITOR_TRANSFORM_180;
|
||||||
if (rotation & RR_Rotate_270)
|
if (rotation & RR_Rotate_270)
|
||||||
ret |= 1 << WL_OUTPUT_TRANSFORM_270;
|
ret |= 1 << META_MONITOR_TRANSFORM_270;
|
||||||
if (rotation & (RR_Rotate_0 | RR_Reflect_X))
|
if (rotation & (RR_Rotate_0 | RR_Reflect_X))
|
||||||
ret |= 1 << WL_OUTPUT_TRANSFORM_FLIPPED;
|
ret |= 1 << META_MONITOR_TRANSFORM_FLIPPED;
|
||||||
if (rotation & (RR_Rotate_90 | RR_Reflect_X))
|
if (rotation & (RR_Rotate_90 | RR_Reflect_X))
|
||||||
ret |= 1 << WL_OUTPUT_TRANSFORM_FLIPPED_90;
|
ret |= 1 << META_MONITOR_TRANSFORM_FLIPPED_90;
|
||||||
if (rotation & (RR_Rotate_180 | RR_Reflect_X))
|
if (rotation & (RR_Rotate_180 | RR_Reflect_X))
|
||||||
ret |= 1 << WL_OUTPUT_TRANSFORM_FLIPPED_180;
|
ret |= 1 << META_MONITOR_TRANSFORM_FLIPPED_180;
|
||||||
if (rotation & (RR_Rotate_270 | RR_Reflect_X))
|
if (rotation & (RR_Rotate_270 | RR_Reflect_X))
|
||||||
ret |= 1 << WL_OUTPUT_TRANSFORM_FLIPPED_270;
|
ret |= 1 << META_MONITOR_TRANSFORM_FLIPPED_270;
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
@ -434,8 +434,8 @@ meta_monitor_manager_xrandr_read_current (MetaMonitorManager *manager)
|
|||||||
meta_crtc->rect.width = crtc->width;
|
meta_crtc->rect.width = crtc->width;
|
||||||
meta_crtc->rect.height = crtc->height;
|
meta_crtc->rect.height = crtc->height;
|
||||||
meta_crtc->is_dirty = FALSE;
|
meta_crtc->is_dirty = FALSE;
|
||||||
meta_crtc->transform = wl_transform_from_xrandr (crtc->rotation);
|
meta_crtc->transform = meta_monitor_transform_from_xrandr (crtc->rotation);
|
||||||
meta_crtc->all_transforms = wl_transform_from_xrandr_all (crtc->rotations);
|
meta_crtc->all_transforms = meta_monitor_transform_from_xrandr_all (crtc->rotations);
|
||||||
|
|
||||||
for (j = 0; j < (unsigned)resources->nmode; j++)
|
for (j = 0; j < (unsigned)resources->nmode; j++)
|
||||||
{
|
{
|
||||||
@ -637,25 +637,25 @@ meta_monitor_manager_xrandr_set_power_save_mode (MetaMonitorManager *manager,
|
|||||||
}
|
}
|
||||||
|
|
||||||
static Rotation
|
static Rotation
|
||||||
wl_transform_to_xrandr (enum wl_output_transform transform)
|
meta_monitor_transform_to_xrandr (MetaMonitorTransform transform)
|
||||||
{
|
{
|
||||||
switch (transform)
|
switch (transform)
|
||||||
{
|
{
|
||||||
case WL_OUTPUT_TRANSFORM_NORMAL:
|
case META_MONITOR_TRANSFORM_NORMAL:
|
||||||
return RR_Rotate_0;
|
return RR_Rotate_0;
|
||||||
case WL_OUTPUT_TRANSFORM_90:
|
case META_MONITOR_TRANSFORM_90:
|
||||||
return RR_Rotate_90;
|
return RR_Rotate_90;
|
||||||
case WL_OUTPUT_TRANSFORM_180:
|
case META_MONITOR_TRANSFORM_180:
|
||||||
return RR_Rotate_180;
|
return RR_Rotate_180;
|
||||||
case WL_OUTPUT_TRANSFORM_270:
|
case META_MONITOR_TRANSFORM_270:
|
||||||
return RR_Rotate_270;
|
return RR_Rotate_270;
|
||||||
case WL_OUTPUT_TRANSFORM_FLIPPED:
|
case META_MONITOR_TRANSFORM_FLIPPED:
|
||||||
return RR_Reflect_X | RR_Rotate_0;
|
return RR_Reflect_X | RR_Rotate_0;
|
||||||
case WL_OUTPUT_TRANSFORM_FLIPPED_90:
|
case META_MONITOR_TRANSFORM_FLIPPED_90:
|
||||||
return RR_Reflect_X | RR_Rotate_90;
|
return RR_Reflect_X | RR_Rotate_90;
|
||||||
case WL_OUTPUT_TRANSFORM_FLIPPED_180:
|
case META_MONITOR_TRANSFORM_FLIPPED_180:
|
||||||
return RR_Reflect_X | RR_Rotate_180;
|
return RR_Reflect_X | RR_Rotate_180;
|
||||||
case WL_OUTPUT_TRANSFORM_FLIPPED_270:
|
case META_MONITOR_TRANSFORM_FLIPPED_270:
|
||||||
return RR_Reflect_X | RR_Rotate_270;
|
return RR_Reflect_X | RR_Rotate_270;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -847,7 +847,7 @@ meta_monitor_manager_xrandr_apply_configuration (MetaMonitorManager *manager,
|
|||||||
manager_xrandr->time,
|
manager_xrandr->time,
|
||||||
crtc_info->x, crtc_info->y,
|
crtc_info->x, crtc_info->y,
|
||||||
(XID)mode->mode_id,
|
(XID)mode->mode_id,
|
||||||
wl_transform_to_xrandr (crtc_info->transform),
|
meta_monitor_transform_to_xrandr (crtc_info->transform),
|
||||||
outputs, n_outputs);
|
outputs, n_outputs);
|
||||||
|
|
||||||
if (ok != Success)
|
if (ok != Success)
|
||||||
|
@ -168,12 +168,20 @@ wayland_output_destroy_notify (gpointer data)
|
|||||||
g_slice_free (MetaWaylandOutput, wayland_output);
|
g_slice_free (MetaWaylandOutput, wayland_output);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static inline enum wl_output_transform
|
||||||
|
wl_output_transform_from_meta_monitor_transform (MetaMonitorTransform transform)
|
||||||
|
{
|
||||||
|
/* The enums are the same. */
|
||||||
|
return (enum wl_output_transform) transform;
|
||||||
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
wayland_output_update_for_output (MetaWaylandOutput *wayland_output,
|
wayland_output_update_for_output (MetaWaylandOutput *wayland_output,
|
||||||
MetaOutput *output)
|
MetaOutput *output)
|
||||||
{
|
{
|
||||||
GList *iter;
|
GList *iter;
|
||||||
guint mode_flags;
|
guint mode_flags;
|
||||||
|
enum wl_output_transform wl_transform = wl_output_transform_from_meta_monitor_transform (output->crtc->transform);
|
||||||
|
|
||||||
g_assert (output->crtc->current_mode != NULL);
|
g_assert (output->crtc->current_mode != NULL);
|
||||||
|
|
||||||
@ -187,7 +195,7 @@ wayland_output_update_for_output (MetaWaylandOutput *wayland_output,
|
|||||||
|
|
||||||
if (wayland_output->x != output->crtc->rect.x ||
|
if (wayland_output->x != output->crtc->rect.x ||
|
||||||
wayland_output->y != output->crtc->rect.y ||
|
wayland_output->y != output->crtc->rect.y ||
|
||||||
wayland_output->transform != output->crtc->transform)
|
wayland_output->transform != wl_transform)
|
||||||
{
|
{
|
||||||
wl_resource_post_event (resource,
|
wl_resource_post_event (resource,
|
||||||
WL_OUTPUT_GEOMETRY,
|
WL_OUTPUT_GEOMETRY,
|
||||||
@ -198,7 +206,7 @@ wayland_output_update_for_output (MetaWaylandOutput *wayland_output,
|
|||||||
output->subpixel_order,
|
output->subpixel_order,
|
||||||
output->vendor,
|
output->vendor,
|
||||||
output->product,
|
output->product,
|
||||||
output->crtc->transform);
|
wl_transform);
|
||||||
}
|
}
|
||||||
|
|
||||||
wl_resource_post_event (resource,
|
wl_resource_post_event (resource,
|
||||||
@ -214,7 +222,7 @@ wayland_output_update_for_output (MetaWaylandOutput *wayland_output,
|
|||||||
wayland_output->output = output;
|
wayland_output->output = output;
|
||||||
wayland_output->x = output->crtc->rect.x;
|
wayland_output->x = output->crtc->rect.x;
|
||||||
wayland_output->y = output->crtc->rect.y;
|
wayland_output->y = output->crtc->rect.y;
|
||||||
wayland_output->transform = output->crtc->transform;
|
wayland_output->transform = wl_transform;
|
||||||
}
|
}
|
||||||
|
|
||||||
static GHashTable *
|
static GHashTable *
|
||||||
|
Loading…
Reference in New Issue
Block a user