Compare commits
1 Commits
3.29.4
...
gbsneto/tt
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
93b9bc789c |
14
NEWS
14
NEWS
@@ -1,20 +1,10 @@
|
|||||||
3.29.4
|
|
||||||
======
|
|
||||||
* Fix crash with parent-less modal dialogs [Olivier; #174]
|
|
||||||
* Preserve paint volumes where possible to optimize CPU usage [Carlos; #782344]
|
|
||||||
|
|
||||||
Contributors:
|
|
||||||
Jonas Ådahl, Olivier Fourdan, Carlos Garnacho, Iain Lane, Bastien Nocera
|
|
||||||
|
|
||||||
Translators:
|
|
||||||
Daniel Șerbănescu [ro]
|
|
||||||
|
|
||||||
3.29.3
|
3.29.3
|
||||||
======
|
======
|
||||||
* Fix Korean Hangul support on wayland [Changwoo; #152]
|
* Fix Korean Hangul support on wayland [Changwoo; #152]
|
||||||
* Improve support for proprietary Nvidia driver [Jonas; #790316]
|
* Improve support for proprietary Nvidia driver [Jonas; #790316]
|
||||||
* Only upload HW cursor sprite to the GPU that will display them [Jonas; #77]
|
* Only upload HW cursor sprite to the GPU that will display them [Jonas; #77]
|
||||||
* Improve EGLstream support [Miguel; #2, #782575]
|
* nvidia [Miguel; #2]
|
||||||
|
* nvidia [Miguel; #782575]
|
||||||
* Remove MetaScreen to prepare for non-mandatary X11 dependency
|
* Remove MetaScreen to prepare for non-mandatary X11 dependency
|
||||||
[Armin, Jonas; #759538]
|
[Armin, Jonas; #759538]
|
||||||
* Misc. bug fixes [Olivier, Jonas, Sam; #160, !130, #786929, #788834]
|
* Misc. bug fixes [Olivier, Jonas, Sam; #160, !130, #786929, #788834]
|
||||||
|
|||||||
@@ -2,7 +2,7 @@ AC_PREREQ(2.62)
|
|||||||
|
|
||||||
m4_define([mutter_major_version], [3])
|
m4_define([mutter_major_version], [3])
|
||||||
m4_define([mutter_minor_version], [29])
|
m4_define([mutter_minor_version], [29])
|
||||||
m4_define([mutter_micro_version], [4])
|
m4_define([mutter_micro_version], [3])
|
||||||
|
|
||||||
m4_define([mutter_version],
|
m4_define([mutter_version],
|
||||||
[mutter_major_version.mutter_minor_version.mutter_micro_version])
|
[mutter_major_version.mutter_minor_version.mutter_micro_version])
|
||||||
@@ -88,6 +88,7 @@ MUTTER_PC_MODULES="
|
|||||||
cairo >= 1.10.0
|
cairo >= 1.10.0
|
||||||
gsettings-desktop-schemas >= 3.21.4
|
gsettings-desktop-schemas >= 3.21.4
|
||||||
json-glib-1.0
|
json-glib-1.0
|
||||||
|
upower-glib >= 0.99.0
|
||||||
gnome-desktop-3.0
|
gnome-desktop-3.0
|
||||||
xcomposite >= 0.2
|
xcomposite >= 0.2
|
||||||
xcursor
|
xcursor
|
||||||
|
|||||||
100
po/ro.po
100
po/ro.po
@@ -9,8 +9,8 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: metacity.HEAD.ro\n"
|
"Project-Id-Version: metacity.HEAD.ro\n"
|
||||||
"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/mutter/issues\n"
|
"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/mutter/issues\n"
|
||||||
"POT-Creation-Date: 2018-07-13 13:37+0000\n"
|
"POT-Creation-Date: 2018-06-07 13:00+0000\n"
|
||||||
"PO-Revision-Date: 2018-07-17 18:56+0300\n"
|
"PO-Revision-Date: 2018-06-17 21:51+0300\n"
|
||||||
"Last-Translator: Florentina Mușat <florentina.musat.28 [at] gmail [dot] "
|
"Last-Translator: Florentina Mușat <florentina.musat.28 [at] gmail [dot] "
|
||||||
"com>\n"
|
"com>\n"
|
||||||
"Language-Team: Gnome Romanian Translation Team\n"
|
"Language-Team: Gnome Romanian Translation Team\n"
|
||||||
@@ -20,7 +20,7 @@ msgstr ""
|
|||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : (n==0 || (n%100 > 0 && n%100 < "
|
"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : (n==0 || (n%100 > 0 && n%100 < "
|
||||||
"20)) ? 1 : 2);;\n"
|
"20)) ? 1 : 2);;\n"
|
||||||
"X-Generator: Poedit 2.0.9\n"
|
"X-Generator: Poedit 2.0.8\n"
|
||||||
"X-Project-Style: gnome\n"
|
"X-Project-Style: gnome\n"
|
||||||
|
|
||||||
#: data/50-mutter-navigation.xml:6
|
#: data/50-mutter-navigation.xml:6
|
||||||
@@ -550,22 +550,22 @@ msgstr "Comută monitorul"
|
|||||||
msgid "Show on-screen help"
|
msgid "Show on-screen help"
|
||||||
msgstr "Arată ajutorul virtual"
|
msgstr "Arată ajutorul virtual"
|
||||||
|
|
||||||
#: src/backends/meta-monitor-manager.c:907
|
#: src/backends/meta-monitor-manager.c:903
|
||||||
msgid "Built-in display"
|
msgid "Built-in display"
|
||||||
msgstr "Afișaj integrat"
|
msgstr "Afișaj integrat"
|
||||||
|
|
||||||
#: src/backends/meta-monitor-manager.c:930
|
#: src/backends/meta-monitor-manager.c:926
|
||||||
msgid "Unknown"
|
msgid "Unknown"
|
||||||
msgstr "Necunoscut"
|
msgstr "Necunoscut"
|
||||||
|
|
||||||
#: src/backends/meta-monitor-manager.c:932
|
#: src/backends/meta-monitor-manager.c:928
|
||||||
msgid "Unknown Display"
|
msgid "Unknown Display"
|
||||||
msgstr "Afișaj necunoscut"
|
msgstr "Afișaj necunoscut"
|
||||||
|
|
||||||
#. TRANSLATORS: this is a monitor vendor name, followed by a
|
#. TRANSLATORS: this is a monitor vendor name, followed by a
|
||||||
#. * size in inches, like 'Dell 15"'
|
#. * size in inches, like 'Dell 15"'
|
||||||
#.
|
#.
|
||||||
#: src/backends/meta-monitor-manager.c:940
|
#: src/backends/meta-monitor-manager.c:936
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%s %s"
|
msgid "%s %s"
|
||||||
msgstr "%s %s"
|
msgstr "%s %s"
|
||||||
@@ -580,65 +580,66 @@ msgstr ""
|
|||||||
"Un alt administrator de ferestre de compunere rulează deja pe ecranul %i pe "
|
"Un alt administrator de ferestre de compunere rulează deja pe ecranul %i pe "
|
||||||
"afișajul „%s”."
|
"afișajul „%s”."
|
||||||
|
|
||||||
#: src/core/bell.c:254
|
#: src/core/bell.c:194
|
||||||
msgid "Bell event"
|
msgid "Bell event"
|
||||||
msgstr "Eveniment sonor"
|
msgstr "Eveniment sonor"
|
||||||
|
|
||||||
#: src/core/main.c:191
|
#: src/core/display.c:608
|
||||||
|
#, c-format
|
||||||
|
msgid "Failed to open X Window System display “%s”\n"
|
||||||
|
msgstr "Nu s-a putut deschide afișajul sistemului de ferestre X „%s”\n"
|
||||||
|
|
||||||
|
#: src/core/main.c:190
|
||||||
msgid "Disable connection to session manager"
|
msgid "Disable connection to session manager"
|
||||||
msgstr "Dezactivează conexiunea la administratorul de sesiune"
|
msgstr "Dezactivează conexiunea la administratorul de sesiune"
|
||||||
|
|
||||||
#: src/core/main.c:197
|
#: src/core/main.c:196
|
||||||
msgid "Replace the running window manager"
|
msgid "Replace the running window manager"
|
||||||
msgstr "Înlocuiește administratorul de ferestre curent"
|
msgstr "Înlocuiește administratorul de ferestre curent"
|
||||||
|
|
||||||
#: src/core/main.c:203
|
#: src/core/main.c:202
|
||||||
msgid "Specify session management ID"
|
msgid "Specify session management ID"
|
||||||
msgstr "Specifică ID-ul administrării de sesiune"
|
msgstr "Specifică ID-ul administrării de sesiune"
|
||||||
|
|
||||||
#: src/core/main.c:208
|
#: src/core/main.c:207
|
||||||
msgid "X Display to use"
|
msgid "X Display to use"
|
||||||
msgstr "Ecranul X ce va fi folosit"
|
msgstr "Ecranul X ce va fi folosit"
|
||||||
|
|
||||||
#: src/core/main.c:214
|
#: src/core/main.c:213
|
||||||
msgid "Initialize session from savefile"
|
msgid "Initialize session from savefile"
|
||||||
msgstr "Inițializează sesiunea din fișierul salvat"
|
msgstr "Inițializează sesiunea din fișierul salvat"
|
||||||
|
|
||||||
#: src/core/main.c:220
|
#: src/core/main.c:219
|
||||||
msgid "Make X calls synchronous"
|
msgid "Make X calls synchronous"
|
||||||
msgstr "Realizează apelurile X sincron"
|
msgstr "Realizează apelurile X sincron"
|
||||||
|
|
||||||
#: src/core/main.c:227
|
#: src/core/main.c:226
|
||||||
msgid "Run as a wayland compositor"
|
msgid "Run as a wayland compositor"
|
||||||
msgstr "Rulează ca un compunător wayland"
|
msgstr "Rulează ca un compunător wayland"
|
||||||
|
|
||||||
#: src/core/main.c:233
|
#: src/core/main.c:232
|
||||||
msgid "Run as a nested compositor"
|
msgid "Run as a nested compositor"
|
||||||
msgstr "Rulează ca un compunător imbricat"
|
msgstr "Rulează ca un compunător imbricat"
|
||||||
|
|
||||||
#: src/core/main.c:239
|
#: src/core/main.c:240
|
||||||
msgid "Run wayland compositor without starting Xwayland"
|
|
||||||
msgstr "Rulează compunătorul wayland fără a porni Xwayland"
|
|
||||||
|
|
||||||
#: src/core/main.c:247
|
|
||||||
msgid "Run as a full display server, rather than nested"
|
msgid "Run as a full display server, rather than nested"
|
||||||
msgstr "Rulează ca server de afișare și nu ca server imbricat"
|
msgstr "Rulează ca server de afișare și nu ca server imbricat"
|
||||||
|
|
||||||
#: src/core/main.c:253
|
#: src/core/main.c:246
|
||||||
msgid "Run with X11 backend"
|
msgid "Run with X11 backend"
|
||||||
msgstr "Rulează cu backend X11"
|
msgstr "Rulează cu backend X11"
|
||||||
|
|
||||||
#. Translators: %s is a window title
|
#. Translators: %s is a window title
|
||||||
#: src/core/meta-close-dialog-default.c:148
|
#: src/core/meta-close-dialog-default.c:147
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "“%s” is not responding."
|
msgid "“%s” is not responding."
|
||||||
msgstr "„%s” nu răspunde."
|
msgstr "„%s” nu răspunde."
|
||||||
|
|
||||||
#: src/core/meta-close-dialog-default.c:150
|
#: src/core/meta-close-dialog-default.c:149
|
||||||
msgid "Application is not responding."
|
msgid "Application is not responding."
|
||||||
msgstr "Aplicația nu răspunde."
|
msgstr "Aplicația nu răspunde."
|
||||||
|
|
||||||
#: src/core/meta-close-dialog-default.c:155
|
#: src/core/meta-close-dialog-default.c:154
|
||||||
msgid ""
|
msgid ""
|
||||||
"You may choose to wait a short while for it to continue or force the "
|
"You may choose to wait a short while for it to continue or force the "
|
||||||
"application to quit entirely."
|
"application to quit entirely."
|
||||||
@@ -646,11 +647,11 @@ msgstr ""
|
|||||||
"Puteți alege între a aștepta pentru câteva secunde ca aplicația să continue "
|
"Puteți alege între a aștepta pentru câteva secunde ca aplicația să continue "
|
||||||
"sau a forța terminarea aplicației."
|
"sau a forța terminarea aplicației."
|
||||||
|
|
||||||
#: src/core/meta-close-dialog-default.c:162
|
#: src/core/meta-close-dialog-default.c:161
|
||||||
msgid "_Force Quit"
|
msgid "_Force Quit"
|
||||||
msgstr "_Forțează închiderea"
|
msgstr "_Forțează închiderea"
|
||||||
|
|
||||||
#: src/core/meta-close-dialog-default.c:162
|
#: src/core/meta-close-dialog-default.c:161
|
||||||
msgid "_Wait"
|
msgid "_Wait"
|
||||||
msgstr "_Așteaptă"
|
msgstr "_Așteaptă"
|
||||||
|
|
||||||
@@ -678,11 +679,26 @@ msgstr "Afișează versiunea"
|
|||||||
msgid "Mutter plugin to use"
|
msgid "Mutter plugin to use"
|
||||||
msgstr "Modul Mutter de utilizat"
|
msgstr "Modul Mutter de utilizat"
|
||||||
|
|
||||||
#: src/core/prefs.c:1915
|
#: src/core/prefs.c:1997
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Workspace %d"
|
msgid "Workspace %d"
|
||||||
msgstr "Spațiu de lucru %d"
|
msgstr "Spațiu de lucru %d"
|
||||||
|
|
||||||
|
#: src/core/screen.c:583
|
||||||
|
#, c-format
|
||||||
|
msgid ""
|
||||||
|
"Display “%s” already has a window manager; try using the --replace option to "
|
||||||
|
"replace the current window manager."
|
||||||
|
msgstr ""
|
||||||
|
"Afișajul „%s” are deja un administrator de ferestre; încercați să utilizați "
|
||||||
|
"opțiunea --replace (înlocuiește) pentru a înlocui administratorul de "
|
||||||
|
"ferestre curent."
|
||||||
|
|
||||||
|
#: src/core/screen.c:668
|
||||||
|
#, c-format
|
||||||
|
msgid "Screen %d on display “%s” is invalid\n"
|
||||||
|
msgstr "Ecranul %d de pe afișajul „%s” nu este valid\n"
|
||||||
|
|
||||||
#: src/core/util.c:120
|
#: src/core/util.c:120
|
||||||
msgid "Mutter was compiled without support for verbose mode\n"
|
msgid "Mutter was compiled without support for verbose mode\n"
|
||||||
msgstr "Mutter a fost compilat fără suport pentru modul detaliat\n"
|
msgstr "Mutter a fost compilat fără suport pentru modul detaliat\n"
|
||||||
@@ -692,31 +708,7 @@ msgstr "Mutter a fost compilat fără suport pentru modul detaliat\n"
|
|||||||
msgid "Mode Switch: Mode %d"
|
msgid "Mode Switch: Mode %d"
|
||||||
msgstr "Comutator de mod: modul %d"
|
msgstr "Comutator de mod: modul %d"
|
||||||
|
|
||||||
#: src/x11/meta-x11-display.c:666
|
#: src/x11/session.c:1818
|
||||||
#, c-format
|
|
||||||
msgid ""
|
|
||||||
"Display “%s” already has a window manager; try using the --replace option to "
|
|
||||||
"replace the current window manager."
|
|
||||||
msgstr ""
|
|
||||||
"Afișajul „%s” are deja un administrator de ferestre; încercați să utilizați "
|
|
||||||
"opțiunea --replace (înlocuiește) pentru a înlocui administratorul de "
|
|
||||||
"ferestre curent."
|
|
||||||
|
|
||||||
#: src/x11/meta-x11-display.c:1010
|
|
||||||
msgid "Failed to initialize GDK\n"
|
|
||||||
msgstr "Nu s-a putut inițializa GDK\n"
|
|
||||||
|
|
||||||
#: src/x11/meta-x11-display.c:1034
|
|
||||||
#, c-format
|
|
||||||
msgid "Failed to open X Window System display “%s”\n"
|
|
||||||
msgstr "Nu s-a putut deschide afișajul sistemului de ferestre X „%s”\n"
|
|
||||||
|
|
||||||
#: src/x11/meta-x11-display.c:1117
|
|
||||||
#, c-format
|
|
||||||
msgid "Screen %d on display “%s” is invalid\n"
|
|
||||||
msgstr "Ecranul %d de pe afișajul „%s” nu este valid\n"
|
|
||||||
|
|
||||||
#: src/x11/session.c:1819
|
|
||||||
msgid ""
|
msgid ""
|
||||||
"These windows do not support “save current setup” and will have to be "
|
"These windows do not support “save current setup” and will have to be "
|
||||||
"restarted manually next time you log in."
|
"restarted manually next time you log in."
|
||||||
@@ -724,7 +716,7 @@ msgstr ""
|
|||||||
"Aceste ferestre nu suportă „salvează configurarea curentă” și vor trebui "
|
"Aceste ferestre nu suportă „salvează configurarea curentă” și vor trebui "
|
||||||
"repornite manual următoarea dată când vă veți autentifica."
|
"repornite manual următoarea dată când vă veți autentifica."
|
||||||
|
|
||||||
#: src/x11/window-props.c:565
|
#: src/x11/window-props.c:559
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%s (on %s)"
|
msgid "%s (on %s)"
|
||||||
msgstr "%s (pe %s)"
|
msgstr "%s (pe %s)"
|
||||||
|
|||||||
@@ -17,7 +17,6 @@ dist_stacking_DATA = \
|
|||||||
$(srcdir)/tests/stacking/minimized.metatest \
|
$(srcdir)/tests/stacking/minimized.metatest \
|
||||||
$(srcdir)/tests/stacking/mixed-windows.metatest \
|
$(srcdir)/tests/stacking/mixed-windows.metatest \
|
||||||
$(srcdir)/tests/stacking/set-parent.metatest \
|
$(srcdir)/tests/stacking/set-parent.metatest \
|
||||||
$(srcdir)/tests/stacking/set-parent-exported.metatest \
|
|
||||||
$(srcdir)/tests/stacking/override-redirect.metatest
|
$(srcdir)/tests/stacking/override-redirect.metatest
|
||||||
|
|
||||||
mutter-all.test: tests/mutter-all.test.in
|
mutter-all.test: tests/mutter-all.test.in
|
||||||
|
|||||||
@@ -84,8 +84,6 @@ struct _MetaBackendClass
|
|||||||
const char *variants,
|
const char *variants,
|
||||||
const char *options);
|
const char *options);
|
||||||
|
|
||||||
gboolean (* is_lid_closed) (MetaBackend *backend);
|
|
||||||
|
|
||||||
struct xkb_keymap * (* get_keymap) (MetaBackend *backend);
|
struct xkb_keymap * (* get_keymap) (MetaBackend *backend);
|
||||||
|
|
||||||
xkb_layout_index_t (* get_keymap_layout_group) (MetaBackend *backend);
|
xkb_layout_index_t (* get_keymap_layout_group) (MetaBackend *backend);
|
||||||
@@ -146,8 +144,6 @@ struct xkb_keymap * meta_backend_get_keymap (MetaBackend *backend);
|
|||||||
|
|
||||||
xkb_layout_index_t meta_backend_get_keymap_layout_group (MetaBackend *backend);
|
xkb_layout_index_t meta_backend_get_keymap_layout_group (MetaBackend *backend);
|
||||||
|
|
||||||
gboolean meta_backend_is_lid_closed (MetaBackend *backend);
|
|
||||||
|
|
||||||
void meta_backend_update_last_device (MetaBackend *backend,
|
void meta_backend_update_last_device (MetaBackend *backend,
|
||||||
int device_id);
|
int device_id);
|
||||||
|
|
||||||
|
|||||||
@@ -58,7 +58,6 @@ enum
|
|||||||
KEYMAP_CHANGED,
|
KEYMAP_CHANGED,
|
||||||
KEYMAP_LAYOUT_GROUP_CHANGED,
|
KEYMAP_LAYOUT_GROUP_CHANGED,
|
||||||
LAST_DEVICE_CHANGED,
|
LAST_DEVICE_CHANGED,
|
||||||
LID_IS_CLOSED_CHANGED,
|
|
||||||
|
|
||||||
N_SIGNALS
|
N_SIGNALS
|
||||||
};
|
};
|
||||||
@@ -112,10 +111,7 @@ struct _MetaBackendPrivate
|
|||||||
MetaPointerConstraint *client_pointer_constraint;
|
MetaPointerConstraint *client_pointer_constraint;
|
||||||
MetaDnd *dnd;
|
MetaDnd *dnd;
|
||||||
|
|
||||||
guint upower_watch_id;
|
UpClient *up_client;
|
||||||
GDBusProxy *upower_proxy;
|
|
||||||
gboolean lid_is_closed;
|
|
||||||
|
|
||||||
guint sleep_signal_id;
|
guint sleep_signal_id;
|
||||||
GCancellable *cancellable;
|
GCancellable *cancellable;
|
||||||
GDBusConnection *system_bus;
|
GDBusConnection *system_bus;
|
||||||
@@ -145,14 +141,12 @@ meta_backend_finalize (GObject *object)
|
|||||||
g_clear_object (&priv->dbus_session_watcher);
|
g_clear_object (&priv->dbus_session_watcher);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
g_object_unref (priv->up_client);
|
||||||
if (priv->sleep_signal_id)
|
if (priv->sleep_signal_id)
|
||||||
g_dbus_connection_signal_unsubscribe (priv->system_bus, priv->sleep_signal_id);
|
g_dbus_connection_signal_unsubscribe (priv->system_bus, priv->sleep_signal_id);
|
||||||
if (priv->upower_watch_id)
|
|
||||||
g_bus_unwatch_name (priv->upower_watch_id);
|
|
||||||
g_cancellable_cancel (priv->cancellable);
|
g_cancellable_cancel (priv->cancellable);
|
||||||
g_clear_object (&priv->cancellable);
|
g_clear_object (&priv->cancellable);
|
||||||
g_clear_object (&priv->system_bus);
|
g_clear_object (&priv->system_bus);
|
||||||
g_clear_object (&priv->upower_proxy);
|
|
||||||
|
|
||||||
if (priv->device_update_idle_id)
|
if (priv->device_update_idle_id)
|
||||||
g_source_remove (priv->device_update_idle_id);
|
g_source_remove (priv->device_update_idle_id);
|
||||||
@@ -509,144 +503,6 @@ meta_backend_real_get_relative_motion_deltas (MetaBackend *backend,
|
|||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
static gboolean
|
|
||||||
meta_backend_real_is_lid_closed (MetaBackend *backend)
|
|
||||||
{
|
|
||||||
MetaBackendPrivate *priv = meta_backend_get_instance_private (backend);
|
|
||||||
|
|
||||||
return priv->lid_is_closed;
|
|
||||||
}
|
|
||||||
|
|
||||||
gboolean
|
|
||||||
meta_backend_is_lid_closed (MetaBackend *backend)
|
|
||||||
{
|
|
||||||
return META_BACKEND_GET_CLASS (backend)->is_lid_closed (backend);
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
|
||||||
upower_properties_changed (GDBusProxy *proxy,
|
|
||||||
GVariant *changed_properties,
|
|
||||||
GStrv invalidated_properties,
|
|
||||||
gpointer user_data)
|
|
||||||
{
|
|
||||||
MetaBackend *backend = user_data;
|
|
||||||
MetaBackendPrivate *priv = meta_backend_get_instance_private (backend);
|
|
||||||
GVariant *v;
|
|
||||||
gboolean lid_is_closed;
|
|
||||||
|
|
||||||
v = g_variant_lookup_value (changed_properties,
|
|
||||||
"LidIsClosed",
|
|
||||||
G_VARIANT_TYPE_BOOLEAN);
|
|
||||||
if (!v)
|
|
||||||
return;
|
|
||||||
|
|
||||||
lid_is_closed = g_variant_get_boolean (v);
|
|
||||||
g_variant_unref (v);
|
|
||||||
|
|
||||||
if (lid_is_closed == priv->lid_is_closed)
|
|
||||||
return;
|
|
||||||
|
|
||||||
priv->lid_is_closed = lid_is_closed;
|
|
||||||
g_signal_emit (backend, signals[LID_IS_CLOSED_CHANGED], 0,
|
|
||||||
priv->lid_is_closed);
|
|
||||||
|
|
||||||
if (lid_is_closed)
|
|
||||||
return;
|
|
||||||
|
|
||||||
meta_idle_monitor_reset_idletime (meta_idle_monitor_get_core ());
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
|
||||||
upower_ready_cb (GObject *source_object,
|
|
||||||
GAsyncResult *res,
|
|
||||||
gpointer user_data)
|
|
||||||
{
|
|
||||||
MetaBackend *backend;
|
|
||||||
MetaBackendPrivate *priv;
|
|
||||||
GDBusProxy *proxy;
|
|
||||||
GError *error = NULL;
|
|
||||||
GVariant *v;
|
|
||||||
|
|
||||||
proxy = g_dbus_proxy_new_finish (res, &error);
|
|
||||||
if (!proxy)
|
|
||||||
{
|
|
||||||
if (!g_error_matches (error, G_IO_ERROR, G_IO_ERROR_CANCELLED))
|
|
||||||
g_warning ("Failed to create UPower proxy: %s", error->message);
|
|
||||||
g_error_free (error);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
backend = META_BACKEND (user_data);
|
|
||||||
priv = meta_backend_get_instance_private (backend);
|
|
||||||
|
|
||||||
priv->upower_proxy = proxy;
|
|
||||||
g_signal_connect (proxy, "g-properties-changed",
|
|
||||||
G_CALLBACK (upower_properties_changed), backend);
|
|
||||||
|
|
||||||
v = g_dbus_proxy_get_cached_property (proxy, "LidIsClosed");
|
|
||||||
if (!v)
|
|
||||||
return;
|
|
||||||
priv->lid_is_closed = g_variant_get_boolean (v);
|
|
||||||
g_variant_unref (v);
|
|
||||||
|
|
||||||
if (priv->lid_is_closed)
|
|
||||||
{
|
|
||||||
g_signal_emit (backend, signals[LID_IS_CLOSED_CHANGED], 0,
|
|
||||||
priv->lid_is_closed);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
|
||||||
upower_appeared (GDBusConnection *connection,
|
|
||||||
const gchar *name,
|
|
||||||
const gchar *name_owner,
|
|
||||||
gpointer user_data)
|
|
||||||
{
|
|
||||||
MetaBackend *backend = META_BACKEND (user_data);
|
|
||||||
MetaBackendPrivate *priv = meta_backend_get_instance_private (backend);
|
|
||||||
|
|
||||||
g_dbus_proxy_new (connection,
|
|
||||||
G_DBUS_PROXY_FLAGS_NONE,
|
|
||||||
NULL,
|
|
||||||
"org.freedesktop.UPower",
|
|
||||||
"/org/freedesktop/UPower",
|
|
||||||
"org.freedesktop.UPower",
|
|
||||||
priv->cancellable,
|
|
||||||
upower_ready_cb,
|
|
||||||
backend);
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
|
||||||
upower_vanished (GDBusConnection *connection,
|
|
||||||
const gchar *name,
|
|
||||||
gpointer user_data)
|
|
||||||
{
|
|
||||||
MetaBackend *backend = META_BACKEND (user_data);
|
|
||||||
MetaBackendPrivate *priv = meta_backend_get_instance_private (backend);
|
|
||||||
|
|
||||||
g_clear_object (&priv->upower_proxy);
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
|
||||||
meta_backend_constructed (GObject *object)
|
|
||||||
{
|
|
||||||
MetaBackend *backend = META_BACKEND (object);
|
|
||||||
MetaBackendPrivate *priv = meta_backend_get_instance_private (backend);
|
|
||||||
MetaBackendClass *backend_class =
|
|
||||||
META_BACKEND_GET_CLASS (backend);
|
|
||||||
|
|
||||||
if (backend_class->is_lid_closed != meta_backend_real_is_lid_closed)
|
|
||||||
return;
|
|
||||||
|
|
||||||
priv->upower_watch_id = g_bus_watch_name (G_BUS_TYPE_SYSTEM,
|
|
||||||
"org.freedesktop.UPower",
|
|
||||||
G_BUS_NAME_WATCHER_FLAGS_NONE,
|
|
||||||
upower_appeared,
|
|
||||||
upower_vanished,
|
|
||||||
backend,
|
|
||||||
NULL);
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
static void
|
||||||
meta_backend_class_init (MetaBackendClass *klass)
|
meta_backend_class_init (MetaBackendClass *klass)
|
||||||
{
|
{
|
||||||
@@ -654,7 +510,6 @@ meta_backend_class_init (MetaBackendClass *klass)
|
|||||||
GObjectClass *object_class = G_OBJECT_CLASS (klass);
|
GObjectClass *object_class = G_OBJECT_CLASS (klass);
|
||||||
|
|
||||||
object_class->finalize = meta_backend_finalize;
|
object_class->finalize = meta_backend_finalize;
|
||||||
object_class->constructed = meta_backend_constructed;
|
|
||||||
|
|
||||||
klass->post_init = meta_backend_real_post_init;
|
klass->post_init = meta_backend_real_post_init;
|
||||||
klass->create_cursor_renderer = meta_backend_real_create_cursor_renderer;
|
klass->create_cursor_renderer = meta_backend_real_create_cursor_renderer;
|
||||||
@@ -662,7 +517,6 @@ meta_backend_class_init (MetaBackendClass *klass)
|
|||||||
klass->ungrab_device = meta_backend_real_ungrab_device;
|
klass->ungrab_device = meta_backend_real_ungrab_device;
|
||||||
klass->select_stage_events = meta_backend_real_select_stage_events;
|
klass->select_stage_events = meta_backend_real_select_stage_events;
|
||||||
klass->get_relative_motion_deltas = meta_backend_real_get_relative_motion_deltas;
|
klass->get_relative_motion_deltas = meta_backend_real_get_relative_motion_deltas;
|
||||||
klass->is_lid_closed = meta_backend_real_is_lid_closed;
|
|
||||||
|
|
||||||
signals[KEYMAP_CHANGED] =
|
signals[KEYMAP_CHANGED] =
|
||||||
g_signal_new ("keymap-changed",
|
g_signal_new ("keymap-changed",
|
||||||
@@ -685,13 +539,6 @@ meta_backend_class_init (MetaBackendClass *klass)
|
|||||||
0,
|
0,
|
||||||
NULL, NULL, NULL,
|
NULL, NULL, NULL,
|
||||||
G_TYPE_NONE, 1, G_TYPE_INT);
|
G_TYPE_NONE, 1, G_TYPE_INT);
|
||||||
signals[LID_IS_CLOSED_CHANGED] =
|
|
||||||
g_signal_new ("lid-is-closed-changed",
|
|
||||||
G_TYPE_FROM_CLASS (object_class),
|
|
||||||
G_SIGNAL_RUN_LAST,
|
|
||||||
0,
|
|
||||||
NULL, NULL, NULL,
|
|
||||||
G_TYPE_NONE, 1, G_TYPE_BOOLEAN);
|
|
||||||
|
|
||||||
mutter_stage_views = g_getenv ("MUTTER_STAGE_VIEWS");
|
mutter_stage_views = g_getenv ("MUTTER_STAGE_VIEWS");
|
||||||
stage_views_disabled = g_strcmp0 (mutter_stage_views, "0") == 0;
|
stage_views_disabled = g_strcmp0 (mutter_stage_views, "0") == 0;
|
||||||
@@ -715,6 +562,17 @@ meta_backend_create_renderer (MetaBackend *backend,
|
|||||||
return META_BACKEND_GET_CLASS (backend)->create_renderer (backend, error);
|
return META_BACKEND_GET_CLASS (backend)->create_renderer (backend, error);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
lid_is_closed_changed_cb (UpClient *client,
|
||||||
|
GParamSpec *pspec,
|
||||||
|
gpointer user_data)
|
||||||
|
{
|
||||||
|
if (up_client_get_lid_is_closed (client))
|
||||||
|
return;
|
||||||
|
|
||||||
|
meta_idle_monitor_reset_idletime (meta_idle_monitor_get_core ());
|
||||||
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
prepare_for_sleep_cb (GDBusConnection *connection,
|
prepare_for_sleep_cb (GDBusConnection *connection,
|
||||||
const gchar *sender_name,
|
const gchar *sender_name,
|
||||||
@@ -785,6 +643,10 @@ meta_backend_initable_init (GInitable *initable,
|
|||||||
|
|
||||||
priv->dnd = g_object_new (META_TYPE_DND, NULL);
|
priv->dnd = g_object_new (META_TYPE_DND, NULL);
|
||||||
|
|
||||||
|
priv->up_client = up_client_new ();
|
||||||
|
g_signal_connect (priv->up_client, "notify::lid-is-closed",
|
||||||
|
G_CALLBACK (lid_is_closed_changed_cb), NULL);
|
||||||
|
|
||||||
priv->cancellable = g_cancellable_new ();
|
priv->cancellable = g_cancellable_new ();
|
||||||
g_bus_get (G_BUS_TYPE_SYSTEM,
|
g_bus_get (G_BUS_TYPE_SYSTEM,
|
||||||
priv->cancellable,
|
priv->cancellable,
|
||||||
|
|||||||
@@ -23,7 +23,6 @@
|
|||||||
|
|
||||||
#include "backends/meta-monitor-config-manager.h"
|
#include "backends/meta-monitor-config-manager.h"
|
||||||
|
|
||||||
#include "backends/meta-backend-private.h"
|
|
||||||
#include "backends/meta-monitor-config-migration.h"
|
#include "backends/meta-monitor-config-migration.h"
|
||||||
#include "backends/meta-monitor-config-store.h"
|
#include "backends/meta-monitor-config-store.h"
|
||||||
#include "backends/meta-monitor-manager-private.h"
|
#include "backends/meta-monitor-manager-private.h"
|
||||||
@@ -327,15 +326,6 @@ meta_monitor_config_manager_assign (MetaMonitorManager *manager,
|
|||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
static gboolean
|
|
||||||
is_lid_closed (MetaMonitorManager *monitor_manager)
|
|
||||||
{
|
|
||||||
MetaBackend *backend;
|
|
||||||
|
|
||||||
backend = meta_monitor_manager_get_backend (monitor_manager);
|
|
||||||
return meta_backend_is_lid_closed (backend);
|
|
||||||
}
|
|
||||||
|
|
||||||
MetaMonitorsConfigKey *
|
MetaMonitorsConfigKey *
|
||||||
meta_create_monitors_config_key_for_current_state (MetaMonitorManager *monitor_manager)
|
meta_create_monitors_config_key_for_current_state (MetaMonitorManager *monitor_manager)
|
||||||
{
|
{
|
||||||
@@ -350,7 +340,7 @@ meta_create_monitors_config_key_for_current_state (MetaMonitorManager *monitor_m
|
|||||||
MetaMonitorSpec *monitor_spec;
|
MetaMonitorSpec *monitor_spec;
|
||||||
|
|
||||||
if (meta_monitor_is_laptop_panel (monitor) &&
|
if (meta_monitor_is_laptop_panel (monitor) &&
|
||||||
is_lid_closed (monitor_manager))
|
meta_monitor_manager_is_lid_closed (monitor_manager))
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
monitor_spec = meta_monitor_spec_clone (meta_monitor_get_spec (monitor));
|
monitor_spec = meta_monitor_spec_clone (meta_monitor_get_spec (monitor));
|
||||||
@@ -465,7 +455,7 @@ find_primary_monitor (MetaMonitorManager *monitor_manager)
|
|||||||
{
|
{
|
||||||
MetaMonitor *monitor;
|
MetaMonitor *monitor;
|
||||||
|
|
||||||
if (is_lid_closed (monitor_manager))
|
if (meta_monitor_manager_is_lid_closed (monitor_manager))
|
||||||
{
|
{
|
||||||
monitor = meta_monitor_manager_get_primary_monitor (monitor_manager);
|
monitor = meta_monitor_manager_get_primary_monitor (monitor_manager);
|
||||||
if (monitor && !meta_monitor_is_laptop_panel (monitor))
|
if (monitor && !meta_monitor_is_laptop_panel (monitor))
|
||||||
@@ -608,7 +598,7 @@ meta_monitor_config_manager_create_linear (MetaMonitorConfigManager *config_mana
|
|||||||
continue;
|
continue;
|
||||||
|
|
||||||
if (meta_monitor_is_laptop_panel (monitor) &&
|
if (meta_monitor_is_laptop_panel (monitor) &&
|
||||||
is_lid_closed (monitor_manager))
|
meta_monitor_manager_is_lid_closed (monitor_manager))
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
logical_monitor_config =
|
logical_monitor_config =
|
||||||
@@ -1262,7 +1252,7 @@ meta_monitors_config_new (MetaMonitorManager *monitor_manager,
|
|||||||
MetaMonitor *monitor = l->data;
|
MetaMonitor *monitor = l->data;
|
||||||
MetaMonitorSpec *monitor_spec;
|
MetaMonitorSpec *monitor_spec;
|
||||||
|
|
||||||
if (is_lid_closed (monitor_manager) &&
|
if (meta_monitor_manager_is_lid_closed (monitor_manager) &&
|
||||||
meta_monitor_is_laptop_panel (monitor))
|
meta_monitor_is_laptop_panel (monitor))
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
|
|||||||
@@ -37,6 +37,7 @@
|
|||||||
|
|
||||||
#include <cogl/cogl.h>
|
#include <cogl/cogl.h>
|
||||||
#include <libgnome-desktop/gnome-pnp-ids.h>
|
#include <libgnome-desktop/gnome-pnp-ids.h>
|
||||||
|
#include <libupower-glib/upower.h>
|
||||||
|
|
||||||
#include "display-private.h"
|
#include "display-private.h"
|
||||||
#include "stack-tracker.h"
|
#include "stack-tracker.h"
|
||||||
@@ -178,6 +179,7 @@ struct _MetaMonitorManager
|
|||||||
MetaMonitorConfigManager *config_manager;
|
MetaMonitorConfigManager *config_manager;
|
||||||
|
|
||||||
GnomePnpIds *pnp_ids;
|
GnomePnpIds *pnp_ids;
|
||||||
|
UpClient *up_client;
|
||||||
|
|
||||||
gulong experimental_features_changed_handler_id;
|
gulong experimental_features_changed_handler_id;
|
||||||
|
|
||||||
@@ -193,6 +195,8 @@ struct _MetaMonitorManagerClass
|
|||||||
GBytes* (*read_edid) (MetaMonitorManager *,
|
GBytes* (*read_edid) (MetaMonitorManager *,
|
||||||
MetaOutput *);
|
MetaOutput *);
|
||||||
|
|
||||||
|
gboolean (*is_lid_closed) (MetaMonitorManager *);
|
||||||
|
|
||||||
void (*ensure_initial_config) (MetaMonitorManager *);
|
void (*ensure_initial_config) (MetaMonitorManager *);
|
||||||
|
|
||||||
gboolean (*apply_monitors_config) (MetaMonitorManager *,
|
gboolean (*apply_monitors_config) (MetaMonitorManager *,
|
||||||
@@ -331,6 +335,8 @@ void meta_monitor_manager_update_logical_state (MetaMonitorManager
|
|||||||
void meta_monitor_manager_update_logical_state_derived (MetaMonitorManager *manager,
|
void meta_monitor_manager_update_logical_state_derived (MetaMonitorManager *manager,
|
||||||
MetaMonitorsConfig *config);
|
MetaMonitorsConfig *config);
|
||||||
|
|
||||||
|
gboolean meta_monitor_manager_is_lid_closed (MetaMonitorManager *manager);
|
||||||
|
|
||||||
void meta_monitor_manager_lid_is_closed_changed (MetaMonitorManager *manager);
|
void meta_monitor_manager_lid_is_closed_changed (MetaMonitorManager *manager);
|
||||||
|
|
||||||
gboolean meta_monitor_manager_is_headless (MetaMonitorManager *manager);
|
gboolean meta_monitor_manager_is_headless (MetaMonitorManager *manager);
|
||||||
|
|||||||
@@ -36,7 +36,6 @@
|
|||||||
#include "util-private.h"
|
#include "util-private.h"
|
||||||
#include <meta/meta-x11-errors.h>
|
#include <meta/meta-x11-errors.h>
|
||||||
#include "edid.h"
|
#include "edid.h"
|
||||||
#include "backends/meta-backend-private.h"
|
|
||||||
#include "backends/meta-crtc.h"
|
#include "backends/meta-crtc.h"
|
||||||
#include "backends/meta-logical-monitor.h"
|
#include "backends/meta-logical-monitor.h"
|
||||||
#include "backends/meta-monitor.h"
|
#include "backends/meta-monitor.h"
|
||||||
@@ -347,14 +346,30 @@ meta_monitor_manager_lid_is_closed_changed (MetaMonitorManager *manager)
|
|||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
lid_is_closed_changed (MetaBackend *backend,
|
lid_is_closed_changed (UpClient *client,
|
||||||
gboolean lid_is_closed,
|
GParamSpec *pspec,
|
||||||
gpointer user_data)
|
gpointer user_data)
|
||||||
{
|
{
|
||||||
MetaMonitorManager *manager = user_data;
|
MetaMonitorManager *manager = user_data;
|
||||||
|
|
||||||
meta_monitor_manager_lid_is_closed_changed (manager);
|
meta_monitor_manager_lid_is_closed_changed (manager);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static gboolean
|
||||||
|
meta_monitor_manager_real_is_lid_closed (MetaMonitorManager *manager)
|
||||||
|
{
|
||||||
|
if (!manager->up_client)
|
||||||
|
return FALSE;
|
||||||
|
|
||||||
|
return up_client_get_lid_is_closed (manager->up_client);
|
||||||
|
}
|
||||||
|
|
||||||
|
gboolean
|
||||||
|
meta_monitor_manager_is_lid_closed (MetaMonitorManager *manager)
|
||||||
|
{
|
||||||
|
return META_MONITOR_MANAGER_GET_CLASS (manager)->is_lid_closed (manager);
|
||||||
|
}
|
||||||
|
|
||||||
gboolean
|
gboolean
|
||||||
meta_monitor_manager_is_headless (MetaMonitorManager *manager)
|
meta_monitor_manager_is_headless (MetaMonitorManager *manager)
|
||||||
{
|
{
|
||||||
@@ -704,6 +719,8 @@ static void
|
|||||||
meta_monitor_manager_constructed (GObject *object)
|
meta_monitor_manager_constructed (GObject *object)
|
||||||
{
|
{
|
||||||
MetaMonitorManager *manager = META_MONITOR_MANAGER (object);
|
MetaMonitorManager *manager = META_MONITOR_MANAGER (object);
|
||||||
|
MetaMonitorManagerClass *manager_class =
|
||||||
|
META_MONITOR_MANAGER_GET_CLASS (manager);
|
||||||
MetaBackend *backend = manager->backend;
|
MetaBackend *backend = manager->backend;
|
||||||
MetaSettings *settings = meta_backend_get_settings (backend);
|
MetaSettings *settings = meta_backend_get_settings (backend);
|
||||||
|
|
||||||
@@ -713,6 +730,13 @@ meta_monitor_manager_constructed (GObject *object)
|
|||||||
G_CALLBACK (experimental_features_changed),
|
G_CALLBACK (experimental_features_changed),
|
||||||
manager);
|
manager);
|
||||||
|
|
||||||
|
if (manager_class->is_lid_closed == meta_monitor_manager_real_is_lid_closed)
|
||||||
|
{
|
||||||
|
manager->up_client = up_client_new ();
|
||||||
|
g_signal_connect_object (manager->up_client, "notify::lid-is-closed",
|
||||||
|
G_CALLBACK (lid_is_closed_changed), manager, 0);
|
||||||
|
}
|
||||||
|
|
||||||
g_signal_connect_object (manager, "notify::power-save-mode",
|
g_signal_connect_object (manager, "notify::power-save-mode",
|
||||||
G_CALLBACK (power_save_mode_changed), manager, 0);
|
G_CALLBACK (power_save_mode_changed), manager, 0);
|
||||||
|
|
||||||
@@ -721,11 +745,6 @@ meta_monitor_manager_constructed (GObject *object)
|
|||||||
G_CALLBACK (orientation_changed),
|
G_CALLBACK (orientation_changed),
|
||||||
manager, 0);
|
manager, 0);
|
||||||
|
|
||||||
g_signal_connect_object (backend,
|
|
||||||
"lid-is-closed-changed",
|
|
||||||
G_CALLBACK (lid_is_closed_changed),
|
|
||||||
manager, 0);
|
|
||||||
|
|
||||||
manager->current_switch_config = META_MONITOR_SWITCH_CONFIG_UNKNOWN;
|
manager->current_switch_config = META_MONITOR_SWITCH_CONFIG_UNKNOWN;
|
||||||
|
|
||||||
initialize_dbus_interface (manager);
|
initialize_dbus_interface (manager);
|
||||||
@@ -757,6 +776,7 @@ meta_monitor_manager_dispose (GObject *object)
|
|||||||
}
|
}
|
||||||
|
|
||||||
g_clear_object (&manager->config_manager);
|
g_clear_object (&manager->config_manager);
|
||||||
|
g_clear_object (&manager->up_client);
|
||||||
|
|
||||||
G_OBJECT_CLASS (meta_monitor_manager_parent_class)->dispose (object);
|
G_OBJECT_CLASS (meta_monitor_manager_parent_class)->dispose (object);
|
||||||
}
|
}
|
||||||
@@ -824,6 +844,7 @@ meta_monitor_manager_class_init (MetaMonitorManagerClass *klass)
|
|||||||
|
|
||||||
klass->get_edid_file = meta_monitor_manager_real_get_edid_file;
|
klass->get_edid_file = meta_monitor_manager_real_get_edid_file;
|
||||||
klass->read_edid = meta_monitor_manager_real_read_edid;
|
klass->read_edid = meta_monitor_manager_real_read_edid;
|
||||||
|
klass->is_lid_closed = meta_monitor_manager_real_is_lid_closed;
|
||||||
|
|
||||||
signals[MONITORS_CHANGED_INTERNAL] =
|
signals[MONITORS_CHANGED_INTERNAL] =
|
||||||
g_signal_new ("monitors-changed-internal",
|
g_signal_new ("monitors-changed-internal",
|
||||||
@@ -1561,7 +1582,7 @@ meta_monitor_manager_is_config_applicable (MetaMonitorManager *manager,
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (meta_monitor_is_laptop_panel (monitor) &&
|
if (meta_monitor_is_laptop_panel (monitor) &&
|
||||||
meta_backend_is_lid_closed (manager->backend))
|
meta_monitor_manager_is_lid_closed (manager))
|
||||||
{
|
{
|
||||||
g_set_error (error, G_IO_ERROR, G_IO_ERROR_FAILED,
|
g_set_error (error, G_IO_ERROR, G_IO_ERROR_FAILED,
|
||||||
"Refusing to activate a closed laptop panel");
|
"Refusing to activate a closed laptop panel");
|
||||||
@@ -2963,7 +2984,7 @@ meta_monitor_manager_switch_config (MetaMonitorManager *manager,
|
|||||||
gboolean
|
gboolean
|
||||||
meta_monitor_manager_can_switch_config (MetaMonitorManager *manager)
|
meta_monitor_manager_can_switch_config (MetaMonitorManager *manager)
|
||||||
{
|
{
|
||||||
return (!meta_backend_is_lid_closed (manager->backend) &&
|
return (!meta_monitor_manager_is_lid_closed (manager) &&
|
||||||
g_list_length (manager->monitors) > 1);
|
g_list_length (manager->monitors) > 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -29,6 +29,7 @@
|
|||||||
|
|
||||||
#include <meta/main.h>
|
#include <meta/main.h>
|
||||||
#include <clutter/evdev/clutter-evdev.h>
|
#include <clutter/evdev/clutter-evdev.h>
|
||||||
|
#include <libupower-glib/upower.h>
|
||||||
|
|
||||||
#include "clutter/egl/clutter-egl.h"
|
#include "clutter/egl/clutter-egl.h"
|
||||||
#include "clutter/evdev/clutter-evdev.h"
|
#include "clutter/evdev/clutter-evdev.h"
|
||||||
|
|||||||
@@ -148,7 +148,10 @@ meta_gpu_kms_apply_crtc_mode (MetaGpuKms *gpu_kms,
|
|||||||
connectors, n_connectors,
|
connectors, n_connectors,
|
||||||
mode) != 0)
|
mode) != 0)
|
||||||
{
|
{
|
||||||
g_warning ("Failed to set CRTC mode %s: %m", crtc->current_mode->name);
|
if (crtc->current_mode)
|
||||||
|
g_warning ("Failed to set CRTC mode %s: %m", crtc->current_mode->name);
|
||||||
|
else
|
||||||
|
g_warning ("Failed to set CRTC mode: %m");
|
||||||
g_free (connectors);
|
g_free (connectors);
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -778,18 +778,6 @@ meta_stack_tracker_configure_event (MetaStackTracker *tracker,
|
|||||||
stack_tracker_event_received (tracker, &op);
|
stack_tracker_event_received (tracker, &op);
|
||||||
}
|
}
|
||||||
|
|
||||||
static gboolean
|
|
||||||
meta_stack_tracker_is_guard_window (MetaStackTracker *tracker,
|
|
||||||
uint64_t stack_id)
|
|
||||||
{
|
|
||||||
MetaX11Display *x11_display = tracker->display->x11_display;
|
|
||||||
|
|
||||||
if (!x11_display)
|
|
||||||
return FALSE;
|
|
||||||
|
|
||||||
return stack_id == x11_display->guard_window;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* meta_stack_tracker_get_stack:
|
* meta_stack_tracker_get_stack:
|
||||||
* @tracker: a #MetaStackTracker
|
* @tracker: a #MetaStackTracker
|
||||||
@@ -1075,6 +1063,7 @@ meta_stack_tracker_lower (MetaStackTracker *tracker,
|
|||||||
static void
|
static void
|
||||||
meta_stack_tracker_keep_override_redirect_on_top (MetaStackTracker *tracker)
|
meta_stack_tracker_keep_override_redirect_on_top (MetaStackTracker *tracker)
|
||||||
{
|
{
|
||||||
|
MetaWindow *window;
|
||||||
guint64 *stack;
|
guint64 *stack;
|
||||||
int n_windows, i;
|
int n_windows, i;
|
||||||
int topmost_non_or;
|
int topmost_non_or;
|
||||||
@@ -1083,8 +1072,6 @@ meta_stack_tracker_keep_override_redirect_on_top (MetaStackTracker *tracker)
|
|||||||
|
|
||||||
for (i = n_windows - 1; i >= 0; i--)
|
for (i = n_windows - 1; i >= 0; i--)
|
||||||
{
|
{
|
||||||
MetaWindow *window;
|
|
||||||
|
|
||||||
window = meta_display_lookup_stack_id (tracker->display, stack[i]);
|
window = meta_display_lookup_stack_id (tracker->display, stack[i]);
|
||||||
if (window && window->layer != META_LAYER_OVERRIDE_REDIRECT)
|
if (window && window->layer != META_LAYER_OVERRIDE_REDIRECT)
|
||||||
break;
|
break;
|
||||||
@@ -1094,11 +1081,6 @@ meta_stack_tracker_keep_override_redirect_on_top (MetaStackTracker *tracker)
|
|||||||
|
|
||||||
for (i -= 1; i >= 0; i--)
|
for (i -= 1; i >= 0; i--)
|
||||||
{
|
{
|
||||||
MetaWindow *window;
|
|
||||||
|
|
||||||
if (meta_stack_tracker_is_guard_window (tracker, stack[i]))
|
|
||||||
break;
|
|
||||||
|
|
||||||
window = meta_display_lookup_stack_id (tracker->display, stack[i]);
|
window = meta_display_lookup_stack_id (tracker->display, stack[i]);
|
||||||
if (window && window->layer == META_LAYER_OVERRIDE_REDIRECT)
|
if (window && window->layer == META_LAYER_OVERRIDE_REDIRECT)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -195,7 +195,6 @@ enum
|
|||||||
UNMANAGED,
|
UNMANAGED,
|
||||||
SIZE_CHANGED,
|
SIZE_CHANGED,
|
||||||
POSITION_CHANGED,
|
POSITION_CHANGED,
|
||||||
SHOWN,
|
|
||||||
|
|
||||||
LAST_SIGNAL
|
LAST_SIGNAL
|
||||||
};
|
};
|
||||||
@@ -643,20 +642,6 @@ meta_window_class_init (MetaWindowClass *klass)
|
|||||||
NULL, NULL, NULL,
|
NULL, NULL, NULL,
|
||||||
G_TYPE_NONE, 0);
|
G_TYPE_NONE, 0);
|
||||||
|
|
||||||
/**
|
|
||||||
* MetaWindow::shown:
|
|
||||||
* @window: a #MetaWindow
|
|
||||||
*
|
|
||||||
* This is emitted after a window has been shown.
|
|
||||||
*/
|
|
||||||
window_signals[SHOWN] =
|
|
||||||
g_signal_new ("shown",
|
|
||||||
G_TYPE_FROM_CLASS (object_class),
|
|
||||||
G_SIGNAL_RUN_LAST,
|
|
||||||
0,
|
|
||||||
NULL, NULL, NULL,
|
|
||||||
G_TYPE_NONE, 0);
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* MetaWindow::size-changed:
|
* MetaWindow::size-changed:
|
||||||
* @window: a #MetaWindow
|
* @window: a #MetaWindow
|
||||||
@@ -2568,9 +2553,6 @@ meta_window_show (MetaWindow *window)
|
|||||||
g_signal_emit_by_name (window->display, "window-demands-attention",
|
g_signal_emit_by_name (window->display, "window-demands-attention",
|
||||||
window);
|
window);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (did_show)
|
|
||||||
g_signal_emit (window, window_signals[SHOWN], 0);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
|
|||||||
@@ -26,27 +26,10 @@
|
|||||||
struct _MetaBackendTest
|
struct _MetaBackendTest
|
||||||
{
|
{
|
||||||
MetaBackendX11Nested parent;
|
MetaBackendX11Nested parent;
|
||||||
|
|
||||||
gboolean is_lid_closed;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
G_DEFINE_TYPE (MetaBackendTest, meta_backend_test, META_TYPE_BACKEND_X11_NESTED)
|
G_DEFINE_TYPE (MetaBackendTest, meta_backend_test, META_TYPE_BACKEND_X11_NESTED)
|
||||||
|
|
||||||
void
|
|
||||||
meta_backend_test_set_is_lid_closed (MetaBackendTest *backend_test,
|
|
||||||
gboolean is_lid_closed)
|
|
||||||
{
|
|
||||||
backend_test->is_lid_closed = is_lid_closed;
|
|
||||||
}
|
|
||||||
|
|
||||||
static gboolean
|
|
||||||
meta_backend_test_is_lid_closed (MetaBackend *backend)
|
|
||||||
{
|
|
||||||
MetaBackendTest *backend_test = META_BACKEND_TEST (backend);
|
|
||||||
|
|
||||||
return backend_test->is_lid_closed;
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
static void
|
||||||
meta_backend_test_init (MetaBackendTest *backend_test)
|
meta_backend_test_init (MetaBackendTest *backend_test)
|
||||||
{
|
{
|
||||||
@@ -67,5 +50,4 @@ meta_backend_test_class_init (MetaBackendTestClass *klass)
|
|||||||
MetaBackendClass *backend_class = META_BACKEND_CLASS (klass);
|
MetaBackendClass *backend_class = META_BACKEND_CLASS (klass);
|
||||||
|
|
||||||
backend_class->create_monitor_manager = meta_backend_test_create_monitor_manager;
|
backend_class->create_monitor_manager = meta_backend_test_create_monitor_manager;
|
||||||
backend_class->is_lid_closed = meta_backend_test_is_lid_closed;
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -26,7 +26,4 @@
|
|||||||
G_DECLARE_FINAL_TYPE (MetaBackendTest, meta_backend_test,
|
G_DECLARE_FINAL_TYPE (MetaBackendTest, meta_backend_test,
|
||||||
META, BACKEND_TEST, MetaBackendX11Nested)
|
META, BACKEND_TEST, MetaBackendX11Nested)
|
||||||
|
|
||||||
void meta_backend_test_set_is_lid_closed (MetaBackendTest *backend_test,
|
|
||||||
gboolean is_lid_closed);
|
|
||||||
|
|
||||||
#endif /* META_BACKEND_TEST_H */
|
#endif /* META_BACKEND_TEST_H */
|
||||||
|
|||||||
@@ -33,6 +33,7 @@ struct _MetaMonitorManagerTest
|
|||||||
|
|
||||||
MetaGpu *gpu;
|
MetaGpu *gpu;
|
||||||
|
|
||||||
|
gboolean is_lid_closed;
|
||||||
gboolean handles_transforms;
|
gboolean handles_transforms;
|
||||||
|
|
||||||
int tiled_monitor_count;
|
int tiled_monitor_count;
|
||||||
@@ -80,6 +81,13 @@ meta_monitor_manager_test_emulate_hotplug (MetaMonitorManagerTest *manager_test,
|
|||||||
g_free (old_test_setup);
|
g_free (old_test_setup);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
meta_monitor_manager_test_set_is_lid_closed (MetaMonitorManagerTest *manager_test,
|
||||||
|
gboolean is_lid_closed)
|
||||||
|
{
|
||||||
|
manager_test->is_lid_closed = is_lid_closed;
|
||||||
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
meta_monitor_manager_test_set_handles_transforms (MetaMonitorManagerTest *manager_test,
|
meta_monitor_manager_test_set_handles_transforms (MetaMonitorManagerTest *manager_test,
|
||||||
gboolean handles_transforms)
|
gboolean handles_transforms)
|
||||||
@@ -119,6 +127,14 @@ meta_monitor_manager_test_read_current (MetaMonitorManager *manager)
|
|||||||
manager_test->test_setup->outputs);
|
manager_test->test_setup->outputs);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static gboolean
|
||||||
|
meta_monitor_manager_test_is_lid_closed (MetaMonitorManager *manager)
|
||||||
|
{
|
||||||
|
MetaMonitorManagerTest *manager_test = META_MONITOR_MANAGER_TEST (manager);
|
||||||
|
|
||||||
|
return manager_test->is_lid_closed;
|
||||||
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
meta_monitor_manager_test_ensure_initial_config (MetaMonitorManager *manager)
|
meta_monitor_manager_test_ensure_initial_config (MetaMonitorManager *manager)
|
||||||
{
|
{
|
||||||
@@ -480,6 +496,7 @@ meta_monitor_manager_test_class_init (MetaMonitorManagerTestClass *klass)
|
|||||||
|
|
||||||
object_class->dispose = meta_monitor_manager_test_dispose;
|
object_class->dispose = meta_monitor_manager_test_dispose;
|
||||||
|
|
||||||
|
manager_class->is_lid_closed = meta_monitor_manager_test_is_lid_closed;
|
||||||
manager_class->ensure_initial_config = meta_monitor_manager_test_ensure_initial_config;
|
manager_class->ensure_initial_config = meta_monitor_manager_test_ensure_initial_config;
|
||||||
manager_class->apply_monitors_config = meta_monitor_manager_test_apply_monitors_config;
|
manager_class->apply_monitors_config = meta_monitor_manager_test_apply_monitors_config;
|
||||||
manager_class->tiled_monitor_added = meta_monitor_manager_test_tiled_monitor_added;
|
manager_class->tiled_monitor_added = meta_monitor_manager_test_tiled_monitor_added;
|
||||||
|
|||||||
@@ -49,6 +49,9 @@ MetaGpu * meta_monitor_manager_test_get_gpu (MetaMonitorManagerTest *manager_tes
|
|||||||
void meta_monitor_manager_test_emulate_hotplug (MetaMonitorManagerTest *manager_test,
|
void meta_monitor_manager_test_emulate_hotplug (MetaMonitorManagerTest *manager_test,
|
||||||
MetaMonitorTestSetup *test_setup);
|
MetaMonitorTestSetup *test_setup);
|
||||||
|
|
||||||
|
void meta_monitor_manager_test_set_is_lid_closed (MetaMonitorManagerTest *manager_test,
|
||||||
|
gboolean is_lid_closed);
|
||||||
|
|
||||||
void meta_monitor_manager_test_set_handles_transforms (MetaMonitorManagerTest *manager_test,
|
void meta_monitor_manager_test_set_handles_transforms (MetaMonitorManagerTest *manager_test,
|
||||||
gboolean handles_transforms);
|
gboolean handles_transforms);
|
||||||
|
|
||||||
|
|||||||
@@ -28,7 +28,6 @@
|
|||||||
#include "backends/meta-monitor-config-migration.h"
|
#include "backends/meta-monitor-config-migration.h"
|
||||||
#include "backends/meta-monitor-config-store.h"
|
#include "backends/meta-monitor-config-store.h"
|
||||||
#include "backends/meta-output.h"
|
#include "backends/meta-output.h"
|
||||||
#include "meta-backend-test.h"
|
|
||||||
#include "tests/meta-monitor-manager-test.h"
|
#include "tests/meta-monitor-manager-test.h"
|
||||||
#include "tests/monitor-test-utils.h"
|
#include "tests/monitor-test-utils.h"
|
||||||
#include "tests/test-utils.h"
|
#include "tests/test-utils.h"
|
||||||
@@ -2352,13 +2351,15 @@ meta_test_monitor_lid_switch_config (void)
|
|||||||
MetaBackend *backend = meta_get_backend ();
|
MetaBackend *backend = meta_get_backend ();
|
||||||
MetaMonitorManager *monitor_manager =
|
MetaMonitorManager *monitor_manager =
|
||||||
meta_backend_get_monitor_manager (backend);
|
meta_backend_get_monitor_manager (backend);
|
||||||
|
MetaMonitorManagerTest *monitor_manager_test =
|
||||||
|
META_MONITOR_MANAGER_TEST (monitor_manager);
|
||||||
|
|
||||||
test_setup = create_monitor_test_setup (&test_case,
|
test_setup = create_monitor_test_setup (&test_case,
|
||||||
MONITOR_TEST_FLAG_NO_STORED);
|
MONITOR_TEST_FLAG_NO_STORED);
|
||||||
emulate_hotplug (test_setup);
|
emulate_hotplug (test_setup);
|
||||||
check_monitor_configuration (&test_case);
|
check_monitor_configuration (&test_case);
|
||||||
|
|
||||||
meta_backend_test_set_is_lid_closed (META_BACKEND_TEST (backend), TRUE);
|
meta_monitor_manager_test_set_is_lid_closed (monitor_manager_test, TRUE);
|
||||||
meta_monitor_manager_lid_is_closed_changed (monitor_manager);
|
meta_monitor_manager_lid_is_closed_changed (monitor_manager);
|
||||||
|
|
||||||
test_case.expect.logical_monitors[0] = (MonitorTestCaseLogicalMonitor) {
|
test_case.expect.logical_monitors[0] = (MonitorTestCaseLogicalMonitor) {
|
||||||
@@ -2374,7 +2375,7 @@ meta_test_monitor_lid_switch_config (void)
|
|||||||
|
|
||||||
check_monitor_configuration (&test_case);
|
check_monitor_configuration (&test_case);
|
||||||
|
|
||||||
meta_backend_test_set_is_lid_closed (META_BACKEND_TEST (backend), FALSE);
|
meta_monitor_manager_test_set_is_lid_closed (monitor_manager_test, FALSE);
|
||||||
meta_monitor_manager_lid_is_closed_changed (monitor_manager);
|
meta_monitor_manager_lid_is_closed_changed (monitor_manager);
|
||||||
|
|
||||||
test_case.expect.logical_monitors[0] = (MonitorTestCaseLogicalMonitor) {
|
test_case.expect.logical_monitors[0] = (MonitorTestCaseLogicalMonitor) {
|
||||||
@@ -2523,15 +2524,17 @@ meta_test_monitor_lid_opened_config (void)
|
|||||||
MetaBackend *backend = meta_get_backend ();
|
MetaBackend *backend = meta_get_backend ();
|
||||||
MetaMonitorManager *monitor_manager =
|
MetaMonitorManager *monitor_manager =
|
||||||
meta_backend_get_monitor_manager (backend);
|
meta_backend_get_monitor_manager (backend);
|
||||||
|
MetaMonitorManagerTest *monitor_manager_test =
|
||||||
|
META_MONITOR_MANAGER_TEST (monitor_manager);
|
||||||
|
|
||||||
test_setup = create_monitor_test_setup (&test_case,
|
test_setup = create_monitor_test_setup (&test_case,
|
||||||
MONITOR_TEST_FLAG_NO_STORED);
|
MONITOR_TEST_FLAG_NO_STORED);
|
||||||
meta_backend_test_set_is_lid_closed (META_BACKEND_TEST (backend), TRUE);
|
meta_monitor_manager_test_set_is_lid_closed (monitor_manager_test, TRUE);
|
||||||
|
|
||||||
emulate_hotplug (test_setup);
|
emulate_hotplug (test_setup);
|
||||||
check_monitor_configuration (&test_case);
|
check_monitor_configuration (&test_case);
|
||||||
|
|
||||||
meta_backend_test_set_is_lid_closed (META_BACKEND_TEST (backend), FALSE);
|
meta_monitor_manager_test_set_is_lid_closed (monitor_manager_test, FALSE);
|
||||||
meta_monitor_manager_lid_is_closed_changed (monitor_manager);
|
meta_monitor_manager_lid_is_closed_changed (monitor_manager);
|
||||||
|
|
||||||
test_case.expect.n_logical_monitors = 2;
|
test_case.expect.n_logical_monitors = 2;
|
||||||
@@ -2627,10 +2630,14 @@ meta_test_monitor_lid_closed_no_external (void)
|
|||||||
};
|
};
|
||||||
MetaMonitorTestSetup *test_setup;
|
MetaMonitorTestSetup *test_setup;
|
||||||
MetaBackend *backend = meta_get_backend ();
|
MetaBackend *backend = meta_get_backend ();
|
||||||
|
MetaMonitorManager *monitor_manager =
|
||||||
|
meta_backend_get_monitor_manager (backend);
|
||||||
|
MetaMonitorManagerTest *monitor_manager_test =
|
||||||
|
META_MONITOR_MANAGER_TEST (monitor_manager);
|
||||||
|
|
||||||
test_setup = create_monitor_test_setup (&test_case,
|
test_setup = create_monitor_test_setup (&test_case,
|
||||||
MONITOR_TEST_FLAG_NO_STORED);
|
MONITOR_TEST_FLAG_NO_STORED);
|
||||||
meta_backend_test_set_is_lid_closed (META_BACKEND_TEST (backend), TRUE);
|
meta_monitor_manager_test_set_is_lid_closed (monitor_manager_test, TRUE);
|
||||||
|
|
||||||
emulate_hotplug (test_setup);
|
emulate_hotplug (test_setup);
|
||||||
check_monitor_configuration (&test_case);
|
check_monitor_configuration (&test_case);
|
||||||
@@ -2763,6 +2770,10 @@ meta_test_monitor_lid_closed_with_hotplugged_external (void)
|
|||||||
};
|
};
|
||||||
MetaMonitorTestSetup *test_setup;
|
MetaMonitorTestSetup *test_setup;
|
||||||
MetaBackend *backend = meta_get_backend ();
|
MetaBackend *backend = meta_get_backend ();
|
||||||
|
MetaMonitorManager *monitor_manager =
|
||||||
|
meta_backend_get_monitor_manager (backend);
|
||||||
|
MetaMonitorManagerTest *monitor_manager_test =
|
||||||
|
META_MONITOR_MANAGER_TEST (monitor_manager);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* The first part of this test emulate the following:
|
* The first part of this test emulate the following:
|
||||||
@@ -2773,7 +2784,7 @@ meta_test_monitor_lid_closed_with_hotplugged_external (void)
|
|||||||
|
|
||||||
test_setup = create_monitor_test_setup (&test_case,
|
test_setup = create_monitor_test_setup (&test_case,
|
||||||
MONITOR_TEST_FLAG_NO_STORED);
|
MONITOR_TEST_FLAG_NO_STORED);
|
||||||
meta_backend_test_set_is_lid_closed (META_BACKEND_TEST (backend), FALSE);
|
meta_monitor_manager_test_set_is_lid_closed (monitor_manager_test, FALSE);
|
||||||
|
|
||||||
emulate_hotplug (test_setup);
|
emulate_hotplug (test_setup);
|
||||||
check_monitor_configuration (&test_case);
|
check_monitor_configuration (&test_case);
|
||||||
@@ -2802,7 +2813,7 @@ meta_test_monitor_lid_closed_with_hotplugged_external (void)
|
|||||||
|
|
||||||
test_setup = create_monitor_test_setup (&test_case,
|
test_setup = create_monitor_test_setup (&test_case,
|
||||||
MONITOR_TEST_FLAG_NO_STORED);
|
MONITOR_TEST_FLAG_NO_STORED);
|
||||||
meta_backend_test_set_is_lid_closed (META_BACKEND_TEST (backend), TRUE);
|
meta_monitor_manager_test_set_is_lid_closed (monitor_manager_test, TRUE);
|
||||||
emulate_hotplug (test_setup);
|
emulate_hotplug (test_setup);
|
||||||
check_monitor_configuration (&test_case);
|
check_monitor_configuration (&test_case);
|
||||||
|
|
||||||
@@ -2825,7 +2836,7 @@ meta_test_monitor_lid_closed_with_hotplugged_external (void)
|
|||||||
|
|
||||||
test_setup = create_monitor_test_setup (&test_case,
|
test_setup = create_monitor_test_setup (&test_case,
|
||||||
MONITOR_TEST_FLAG_NO_STORED);
|
MONITOR_TEST_FLAG_NO_STORED);
|
||||||
meta_backend_test_set_is_lid_closed (META_BACKEND_TEST (backend), FALSE);
|
meta_monitor_manager_test_set_is_lid_closed (monitor_manager_test, FALSE);
|
||||||
emulate_hotplug (test_setup);
|
emulate_hotplug (test_setup);
|
||||||
check_monitor_configuration (&test_case);
|
check_monitor_configuration (&test_case);
|
||||||
|
|
||||||
@@ -2851,7 +2862,7 @@ meta_test_monitor_lid_closed_with_hotplugged_external (void)
|
|||||||
|
|
||||||
test_setup = create_monitor_test_setup (&test_case,
|
test_setup = create_monitor_test_setup (&test_case,
|
||||||
MONITOR_TEST_FLAG_NO_STORED);
|
MONITOR_TEST_FLAG_NO_STORED);
|
||||||
meta_backend_test_set_is_lid_closed (META_BACKEND_TEST (backend), TRUE);
|
meta_monitor_manager_test_set_is_lid_closed (monitor_manager_test, TRUE);
|
||||||
emulate_hotplug (test_setup);
|
emulate_hotplug (test_setup);
|
||||||
check_monitor_configuration (&test_case);
|
check_monitor_configuration (&test_case);
|
||||||
|
|
||||||
@@ -2859,7 +2870,7 @@ meta_test_monitor_lid_closed_with_hotplugged_external (void)
|
|||||||
|
|
||||||
test_setup = create_monitor_test_setup (&test_case,
|
test_setup = create_monitor_test_setup (&test_case,
|
||||||
MONITOR_TEST_FLAG_NO_STORED);
|
MONITOR_TEST_FLAG_NO_STORED);
|
||||||
meta_backend_test_set_is_lid_closed (META_BACKEND_TEST (backend), FALSE);
|
meta_monitor_manager_test_set_is_lid_closed (monitor_manager_test, FALSE);
|
||||||
emulate_hotplug (test_setup);
|
emulate_hotplug (test_setup);
|
||||||
check_monitor_configuration (&test_case);
|
check_monitor_configuration (&test_case);
|
||||||
}
|
}
|
||||||
@@ -5346,6 +5357,10 @@ meta_test_monitor_custom_lid_switch_config (void)
|
|||||||
};
|
};
|
||||||
MetaMonitorTestSetup *test_setup;
|
MetaMonitorTestSetup *test_setup;
|
||||||
MetaBackend *backend = meta_get_backend ();
|
MetaBackend *backend = meta_get_backend ();
|
||||||
|
MetaMonitorManager *monitor_manager =
|
||||||
|
meta_backend_get_monitor_manager (backend);
|
||||||
|
MetaMonitorManagerTest *monitor_manager_test =
|
||||||
|
META_MONITOR_MANAGER_TEST (monitor_manager);
|
||||||
|
|
||||||
test_setup = create_monitor_test_setup (&test_case,
|
test_setup = create_monitor_test_setup (&test_case,
|
||||||
MONITOR_TEST_FLAG_NONE);
|
MONITOR_TEST_FLAG_NONE);
|
||||||
@@ -5384,7 +5399,7 @@ meta_test_monitor_custom_lid_switch_config (void)
|
|||||||
test_case.expect.logical_monitors[0].transform = META_MONITOR_TRANSFORM_90;
|
test_case.expect.logical_monitors[0].transform = META_MONITOR_TRANSFORM_90;
|
||||||
test_case.expect.n_logical_monitors = 1;
|
test_case.expect.n_logical_monitors = 1;
|
||||||
test_case.expect.screen_width = 768;
|
test_case.expect.screen_width = 768;
|
||||||
meta_backend_test_set_is_lid_closed (META_BACKEND_TEST (backend), TRUE);
|
meta_monitor_manager_test_set_is_lid_closed (monitor_manager_test, TRUE);
|
||||||
|
|
||||||
test_setup = create_monitor_test_setup (&test_case,
|
test_setup = create_monitor_test_setup (&test_case,
|
||||||
MONITOR_TEST_FLAG_NONE);
|
MONITOR_TEST_FLAG_NONE);
|
||||||
@@ -5405,7 +5420,7 @@ meta_test_monitor_custom_lid_switch_config (void)
|
|||||||
test_case.expect.logical_monitors[1].transform = META_MONITOR_TRANSFORM_270;
|
test_case.expect.logical_monitors[1].transform = META_MONITOR_TRANSFORM_270;
|
||||||
test_case.expect.n_logical_monitors = 2;
|
test_case.expect.n_logical_monitors = 2;
|
||||||
test_case.expect.screen_width = 1024 + 768;
|
test_case.expect.screen_width = 1024 + 768;
|
||||||
meta_backend_test_set_is_lid_closed (META_BACKEND_TEST (backend), FALSE);
|
meta_monitor_manager_test_set_is_lid_closed (monitor_manager_test, FALSE);
|
||||||
|
|
||||||
test_setup = create_monitor_test_setup (&test_case,
|
test_setup = create_monitor_test_setup (&test_case,
|
||||||
MONITOR_TEST_FLAG_NONE);
|
MONITOR_TEST_FLAG_NONE);
|
||||||
|
|||||||
@@ -1,15 +0,0 @@
|
|||||||
new_client 1 wayland
|
|
||||||
create 1/1
|
|
||||||
show 1/1
|
|
||||||
create 1/2
|
|
||||||
show 1/2
|
|
||||||
wait
|
|
||||||
|
|
||||||
set_parent_exported 1/1 2
|
|
||||||
wait
|
|
||||||
assert_stacking 1/2 1/1
|
|
||||||
|
|
||||||
local_activate 1/2
|
|
||||||
assert_stacking 1/2 1/1
|
|
||||||
|
|
||||||
destroy 1/2
|
|
||||||
@@ -20,7 +20,6 @@
|
|||||||
#include <gio/gunixinputstream.h>
|
#include <gio/gunixinputstream.h>
|
||||||
#include <gtk/gtk.h>
|
#include <gtk/gtk.h>
|
||||||
#include <gdk/gdkx.h>
|
#include <gdk/gdkx.h>
|
||||||
#include <gdk/gdkwayland.h>
|
|
||||||
#include <stdarg.h>
|
#include <stdarg.h>
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
@@ -32,19 +31,6 @@ GHashTable *windows;
|
|||||||
|
|
||||||
static void read_next_line (GDataInputStream *in);
|
static void read_next_line (GDataInputStream *in);
|
||||||
|
|
||||||
static void
|
|
||||||
window_export_handle_cb (GdkWindow *window,
|
|
||||||
const char *handle_str,
|
|
||||||
gpointer user_data)
|
|
||||||
{
|
|
||||||
GdkWindow *gdk_window = gtk_widget_get_window (GTK_WIDGET (user_data));
|
|
||||||
|
|
||||||
if (!gdk_wayland_window_set_transient_for_exported (gdk_window,
|
|
||||||
(gchar *) handle_str))
|
|
||||||
g_print ("Fail to set transient_for exported window handle %s", handle_str);
|
|
||||||
gdk_window_set_modal_hint (gdk_window, TRUE);
|
|
||||||
}
|
|
||||||
|
|
||||||
static GtkWidget *
|
static GtkWidget *
|
||||||
lookup_window (const char *window_id)
|
lookup_window (const char *window_id)
|
||||||
{
|
{
|
||||||
@@ -55,6 +41,16 @@ lookup_window (const char *window_id)
|
|||||||
return window;
|
return window;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
on_after_paint (GdkFrameClock *clock,
|
||||||
|
GMainLoop *loop)
|
||||||
|
{
|
||||||
|
g_signal_handlers_disconnect_by_func (clock,
|
||||||
|
(gpointer) on_after_paint,
|
||||||
|
loop);
|
||||||
|
g_main_loop_quit (loop);
|
||||||
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
process_line (const char *line)
|
process_line (const char *line)
|
||||||
{
|
{
|
||||||
@@ -144,7 +140,7 @@ process_line (const char *line)
|
|||||||
{
|
{
|
||||||
if (argc != 3)
|
if (argc != 3)
|
||||||
{
|
{
|
||||||
g_print ("usage: set_parent <window-id> <parent-id>");
|
g_print ("usage: menu <window-id> <parent-id>");
|
||||||
goto out;
|
goto out;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -165,35 +161,6 @@ process_line (const char *line)
|
|||||||
gtk_window_set_transient_for (GTK_WINDOW (window),
|
gtk_window_set_transient_for (GTK_WINDOW (window),
|
||||||
GTK_WINDOW (parent_window));
|
GTK_WINDOW (parent_window));
|
||||||
}
|
}
|
||||||
else if (strcmp (argv[0], "set_parent_exported") == 0)
|
|
||||||
{
|
|
||||||
if (argc != 3)
|
|
||||||
{
|
|
||||||
g_print ("usage: set_parent_exported <window-id> <parent-id>");
|
|
||||||
goto out;
|
|
||||||
}
|
|
||||||
|
|
||||||
GtkWidget *window = lookup_window (argv[1]);
|
|
||||||
if (!window)
|
|
||||||
{
|
|
||||||
g_print ("unknown window %s", argv[1]);
|
|
||||||
goto out;
|
|
||||||
}
|
|
||||||
|
|
||||||
GtkWidget *parent_window = lookup_window (argv[2]);
|
|
||||||
if (!parent_window)
|
|
||||||
{
|
|
||||||
g_print ("unknown parent window %s", argv[2]);
|
|
||||||
goto out;
|
|
||||||
}
|
|
||||||
|
|
||||||
GdkWindow *parent_gdk_window = gtk_widget_get_window (parent_window);
|
|
||||||
if (!gdk_wayland_window_export_handle (parent_gdk_window,
|
|
||||||
window_export_handle_cb,
|
|
||||||
window,
|
|
||||||
NULL))
|
|
||||||
g_print ("Fail to export handle for window id %s", argv[2]);
|
|
||||||
}
|
|
||||||
else if (strcmp (argv[0], "show") == 0)
|
else if (strcmp (argv[0], "show") == 0)
|
||||||
{
|
{
|
||||||
if (argc != 2)
|
if (argc != 2)
|
||||||
@@ -203,11 +170,25 @@ process_line (const char *line)
|
|||||||
}
|
}
|
||||||
|
|
||||||
GtkWidget *window = lookup_window (argv[1]);
|
GtkWidget *window = lookup_window (argv[1]);
|
||||||
|
GdkWindow *gdk_window = gtk_widget_get_window (window);
|
||||||
if (!window)
|
if (!window)
|
||||||
goto out;
|
goto out;
|
||||||
|
|
||||||
gtk_widget_show (window);
|
gtk_widget_show (window);
|
||||||
gdk_display_sync (gdk_display_get_default ());
|
|
||||||
|
/* When a Wayland client, we cannot be really sure that the window has
|
||||||
|
* been mappable until after we have painted. So, in order to have the
|
||||||
|
* test runner rely on the "show" command to have done what the client
|
||||||
|
* needs to do in order for a window to be mappable compositor side, lets
|
||||||
|
* wait with returning until after the first frame.
|
||||||
|
*/
|
||||||
|
GdkFrameClock *frame_clock = gdk_window_get_frame_clock (gdk_window);
|
||||||
|
GMainLoop *loop = g_main_loop_new (NULL, FALSE);
|
||||||
|
g_signal_connect (frame_clock, "after-paint",
|
||||||
|
G_CALLBACK (on_after_paint),
|
||||||
|
loop);
|
||||||
|
g_main_loop_run (loop);
|
||||||
|
g_main_loop_unref (loop);
|
||||||
}
|
}
|
||||||
else if (strcmp (argv[0], "hide") == 0)
|
else if (strcmp (argv[0], "hide") == 0)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -327,39 +327,6 @@ test_case_check_xserver_stacking (TestCase *test,
|
|||||||
return *error == NULL;
|
return *error == NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
typedef struct _WaitForShownData
|
|
||||||
{
|
|
||||||
GMainLoop *loop;
|
|
||||||
MetaWindow *window;
|
|
||||||
guint shown_handler_id;
|
|
||||||
} WaitForShownData;
|
|
||||||
|
|
||||||
static void
|
|
||||||
on_window_shown (MetaWindow *window,
|
|
||||||
WaitForShownData *data)
|
|
||||||
{
|
|
||||||
g_main_loop_quit (data->loop);
|
|
||||||
}
|
|
||||||
|
|
||||||
static gboolean
|
|
||||||
test_case_wait_for_showing_before_redraw (gpointer user_data)
|
|
||||||
{
|
|
||||||
WaitForShownData *data = user_data;
|
|
||||||
|
|
||||||
if (meta_window_is_hidden (data->window))
|
|
||||||
{
|
|
||||||
data->shown_handler_id = g_signal_connect (data->window, "shown",
|
|
||||||
G_CALLBACK (on_window_shown),
|
|
||||||
data);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
g_main_loop_quit (data->loop);
|
|
||||||
}
|
|
||||||
|
|
||||||
return FALSE;
|
|
||||||
}
|
|
||||||
|
|
||||||
static gboolean
|
static gboolean
|
||||||
test_case_do (TestCase *test,
|
test_case_do (TestCase *test,
|
||||||
int argc,
|
int argc,
|
||||||
@@ -423,8 +390,7 @@ test_case_do (TestCase *test,
|
|||||||
NULL))
|
NULL))
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
else if (strcmp (argv[0], "set_parent") == 0 ||
|
else if (strcmp (argv[0], "set_parent") == 0)
|
||||||
strcmp (argv[0], "set_parent_exported") == 0)
|
|
||||||
{
|
{
|
||||||
if (argc != 3)
|
if (argc != 3)
|
||||||
BAD_COMMAND("usage: %s <client-id>/<window-id> <parent-window-id>",
|
BAD_COMMAND("usage: %s <client-id>/<window-id> <parent-window-id>",
|
||||||
@@ -436,42 +402,13 @@ test_case_do (TestCase *test,
|
|||||||
return FALSE;
|
return FALSE;
|
||||||
|
|
||||||
if (!test_client_do (client, error,
|
if (!test_client_do (client, error,
|
||||||
argv[0], window_id,
|
"set_parent", window_id,
|
||||||
argv[2],
|
argv[2],
|
||||||
NULL))
|
NULL))
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
else if (strcmp (argv[0], "show") == 0)
|
else if (strcmp (argv[0], "show") == 0 ||
|
||||||
{
|
strcmp (argv[0], "hide") == 0 ||
|
||||||
if (argc != 2)
|
|
||||||
BAD_COMMAND("usage: %s <client-id>/<window-id>", argv[0]);
|
|
||||||
|
|
||||||
TestClient *client;
|
|
||||||
const char *window_id;
|
|
||||||
if (!test_case_parse_window_id (test, argv[1], &client, &window_id, error))
|
|
||||||
return FALSE;
|
|
||||||
|
|
||||||
if (!test_client_do (client, error, argv[0], window_id, NULL))
|
|
||||||
return FALSE;
|
|
||||||
|
|
||||||
MetaWindow *window = test_client_find_window (client, window_id, error);
|
|
||||||
if (!window)
|
|
||||||
return FALSE;
|
|
||||||
|
|
||||||
WaitForShownData data = {
|
|
||||||
.loop = g_main_loop_new (NULL, FALSE),
|
|
||||||
.window = window,
|
|
||||||
};
|
|
||||||
meta_later_add (META_LATER_BEFORE_REDRAW,
|
|
||||||
test_case_wait_for_showing_before_redraw,
|
|
||||||
&data,
|
|
||||||
NULL);
|
|
||||||
g_main_loop_run (data.loop);
|
|
||||||
if (data.shown_handler_id)
|
|
||||||
g_signal_handler_disconnect (window, data.shown_handler_id);
|
|
||||||
g_main_loop_unref (data.loop);
|
|
||||||
}
|
|
||||||
else if (strcmp (argv[0], "hide") == 0 ||
|
|
||||||
strcmp (argv[0], "activate") == 0 ||
|
strcmp (argv[0], "activate") == 0 ||
|
||||||
strcmp (argv[0], "raise") == 0 ||
|
strcmp (argv[0], "raise") == 0 ||
|
||||||
strcmp (argv[0], "lower") == 0 ||
|
strcmp (argv[0], "lower") == 0 ||
|
||||||
|
|||||||
Reference in New Issue
Block a user