Compare commits

..

3 Commits

Author SHA1 Message Date
Jonas Ådahl
9582f7b207 monitor-manager/kms: Get hotplug events from MetaKms
This makes it clearer that MetaMonitorManagerKms keeps updated as
MetaKms updates its state.

https://gitlab.gnome.org/GNOME/mutter/merge_requests/743
2019-09-03 19:14:47 +02:00
Jonas Ådahl
5fa38f4cd5 kms/impl-device: Add and remove connectors on hot plug
Connectors may disappear and appear on hot plugs, e.g. when a docking
station is connected, so when processing a hot plug event, make sure we
remove connectors that are now gone, and add new ones that has appeared
since last time.

Fixes: https://gitlab.gnome.org/GNOME/mutter/issues/728

https://gitlab.gnome.org/GNOME/mutter/merge_requests/743
2019-09-03 19:14:47 +02:00
Jonas Ådahl
0ae31a45ab kms: Add assert to check that the main thread is blocked on impl task
This is so that we can have code in impl tasks that pokes at the main
context objects.

https://gitlab.gnome.org/GNOME/mutter/merge_requests/743
2019-09-03 19:14:45 +02:00
26 changed files with 370 additions and 419 deletions

View File

@@ -210,8 +210,6 @@ ClutterBackend *_clutter_device_manager_get_backend (ClutterDeviceMa
void _clutter_device_manager_compress_motion (ClutterDeviceManager *device_manger,
ClutterEvent *event,
const ClutterEvent *to_discard);
CLUTTER_EXPORT
void clutter_device_manager_ensure_a11y_state (ClutterDeviceManager *device_manager);
/* input device */
CLUTTER_EXPORT

View File

@@ -607,20 +607,6 @@ _clutter_device_manager_compress_motion (ClutterDeviceManager *device_manager,
manager_class->compress_motion (device_manager, event, to_discard);
}
void
clutter_device_manager_ensure_a11y_state (ClutterDeviceManager *device_manager)
{
ClutterInputDevice *core_pointer;
core_pointer = clutter_device_manager_get_core_device (device_manager,
CLUTTER_POINTER_DEVICE);
if (core_pointer)
{
if (_clutter_is_input_pointer_a11y_enabled (core_pointer))
_clutter_input_pointer_a11y_add_device (core_pointer);
}
}
static gboolean
are_kbd_a11y_settings_equal (ClutterKbdA11ySettings *a,
ClutterKbdA11ySettings *b)

114
po/cs.po
View File

@@ -12,8 +12,8 @@ msgid ""
msgstr ""
"Project-Id-Version: mutter\n"
"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/mutter/issues\n"
"POT-Creation-Date: 2019-08-06 00:49+0000\n"
"PO-Revision-Date: 2019-09-03 22:19+0200\n"
"POT-Creation-Date: 2019-02-04 17:52+0000\n"
"PO-Revision-Date: 2019-02-12 14:21+0100\n"
"Last-Translator: Marek Černocký <marek@manet.cz>\n"
"Language-Team: čeština <gnome-cs-list@gnome.org>\n"
"Language: cs\n"
@@ -396,10 +396,7 @@ msgid ""
"proof. Currently possible keywords: • “scale-monitor-framebuffer” — makes "
"mutter default to layout logical monitors in a logical pixel coordinate "
"space, while scaling monitor framebuffers instead of window content, to "
"manage HiDPI monitors. Does not require a restart. • “rt-scheduler” — makes "
"mutter request a low priority real-time scheduling. The executable or user "
"must have CAP_SYS_NICE. Requires a restart. • “autostart-xwayland” — "
"initializes Xwayland lazily if there are X11 clients. Requires restart."
"manage HiDPI monitors. Does not require a restart."
msgstr ""
"Chcete-li povolit experimentální funkce, přidejte klíčové slovo funkce do "
"seznamu. Zda funkce vyžaduje restartování kompozitoru, závisí na dané "
@@ -410,32 +407,21 @@ msgstr ""
"mutter výchozí pro logické uspořádání monitorů v logickém souřadnicovém "
"prostoru pixelů, zatímco škáluje přímo v grafické vyrovnávací paměti, "
"namísto v obsahu oken, aby se postaral o správu montorů s HiDPI. Nevyžaduje "
"restart. • „rt-scheduler“ zajistí, aby měly požadavky mutter nízkou "
"prioritu v plánování reálného času. Spustitelný soubor nebo uživatel musí "
"mít CAP_SYS_NICE. Vyžaduje restart. • „autostart-xwayland“ inicializuje "
"Xwayland líněji v situaci, kdy existují klienti X11. Vyžaduje restart."
"restart."
#: data/org.gnome.mutter.gschema.xml.in:134
msgid "Modifier to use to locate the pointer"
msgstr "Modifikátor ke zjištění pozice ukazatele"
#: data/org.gnome.mutter.gschema.xml.in:135
msgid "This key will initiate the “locate pointer” action."
msgstr "Tato klávesa spustí činnost „zjisti polohu ukazatele“."
#: data/org.gnome.mutter.gschema.xml.in:155
#: data/org.gnome.mutter.gschema.xml.in:141
msgid "Select window from tab popup"
msgstr "Vybrat okno z překryvné nabídky tabulátoru"
#: data/org.gnome.mutter.gschema.xml.in:160
#: data/org.gnome.mutter.gschema.xml.in:146
msgid "Cancel tab popup"
msgstr "Zrušit překryvné okno tabulátoru"
#: data/org.gnome.mutter.gschema.xml.in:165
#: data/org.gnome.mutter.gschema.xml.in:151
msgid "Switch monitor configurations"
msgstr "Přepnout nastavení monitoru"
#: data/org.gnome.mutter.gschema.xml.in:170
#: data/org.gnome.mutter.gschema.xml.in:156
msgid "Rotates the built-in monitor configuration"
msgstr "Postupně mění vestavěná nastavení monitoru"
@@ -492,39 +478,29 @@ msgid "Re-enable shortcuts"
msgstr "Znovu povolit klávesové zkratky"
#: data/org.gnome.mutter.wayland.gschema.xml.in:64
msgid "Allow X11 grabs to lock keyboard focus with Xwayland"
msgstr ""
"Povolit X11 zachytávání, aby mohl zabrat zaměření klávesnice pomocí Xwaylandu"
msgid "Allow grabs with Xwayland"
msgstr "Povolit zachytávání pomocí Xwaylandu"
#: data/org.gnome.mutter.wayland.gschema.xml.in:65
msgid ""
"Allow all keyboard events to be routed to X11 “override redirect” windows "
"with a grab when running in Xwayland. This option is to support X11 clients "
"which map an “override redirect” window (which do not receive keyboard "
"focus) and issue a keyboard grab to force all keyboard events to that "
"window. This option is seldom used and has no effect on regular X11 windows "
"which can receive keyboard focus under normal circumstances. For a X11 grab "
"to be taken into account under Wayland, the client must also either send a "
"specific X11 ClientMessage to the root window or be among the applications "
"white-listed in key “xwayland-grab-access-rules”."
"Allow keyboard grabs issued by X11 applications running in Xwayland to be "
"taken into account. For a X11 grab to be taken into account under Wayland, "
"the client must also either send a specific X11 ClientMessage to the root "
"window or be among the applications white-listed in key “xwayland-grab-"
"access-rules”."
msgstr ""
"Umožňujs směrovat všechny události klávesnice do oken X11 typu „přebytí "
"přesměrování“ pomocí zachytávání při běhu Xwaylandu. Tato volba je určena pro "
"podporu klientů X11, kteří mapují okna „přebytí přesměrování“ (která "
"nepřijímají zaměření klávesnice) a vynucuje zachytávání klávesnice zasílat "
"všechny události klávesnice do těchto oken. Tato volba je využívána jen "
"zřídka a nemá žádný vliv na běžná okna X11, která mohou přijímat zaměření "
"klávesnice za normálních podmínek. Aby bylo pod Waylandem zachytávání bráno v "
"Povolit, aby bylo bráno v úvahu zachytávání kláves, o které se stará "
"aplikace X11 běžící v Xwaylandu. Aby bylo pod Waylandem zachytávání bráno v "
"úvahu, musí klient navíc buď poslat specifickou zprávu X11 ClientMessage do "
"kořenového okna, nebo být mezi aplikacemi na bílé listině v klíči „xwayland-"
"grab-access-rules“."
#: data/org.gnome.mutter.wayland.gschema.xml.in:84
#: data/org.gnome.mutter.wayland.gschema.xml.in:77
msgid "Xwayland applications allowed to issue keyboard grabs"
msgstr ""
"Aplikace pod Xwaylandem mají povoleno se starat o zachytávání klávesnice"
#: data/org.gnome.mutter.wayland.gschema.xml.in:85
#: data/org.gnome.mutter.wayland.gschema.xml.in:78
msgid ""
"List the resource names or resource class of X11 windows either allowed or "
"not allowed to issue X11 keyboard grabs under Xwayland. The resource name or "
@@ -551,7 +527,7 @@ msgstr ""
#. TRANSLATORS: This string refers to a button that switches between
#. * different modes.
#.
#: src/backends/meta-input-settings.c:2531
#: src/backends/meta-input-settings.c:2423
#, c-format
msgid "Mode Switch (Group %d)"
msgstr "Přepínač režimu (skupina %d)"
@@ -559,34 +535,34 @@ msgstr "Přepínač režimu (skupina %d)"
#. TRANSLATORS: This string refers to an action, cycles drawing tablets'
#. * mapping through the available outputs.
#.
#: src/backends/meta-input-settings.c:2554
#: src/backends/meta-input-settings.c:2446
msgid "Switch monitor"
msgstr "Přepnout monitor"
#: src/backends/meta-input-settings.c:2556
#: src/backends/meta-input-settings.c:2448
msgid "Show on-screen help"
msgstr "Zobrazit nápovědu na obrazovce"
#: src/backends/meta-monitor.c:223
#: src/backends/meta-monitor-manager.c:954
msgid "Built-in display"
msgstr "Vestavěný displej"
#: src/backends/meta-monitor.c:252
#: src/backends/meta-monitor-manager.c:986
msgid "Unknown"
msgstr "Neznámý"
#: src/backends/meta-monitor.c:254
#: src/backends/meta-monitor-manager.c:988
msgid "Unknown Display"
msgstr "Neznámý displej"
#: src/backends/meta-monitor.c:262
#: src/backends/meta-monitor-manager.c:996
#, c-format
msgctxt ""
"This is a monitor vendor name, followed by a size in inches, like 'Dell 15\"'"
msgid "%s %s"
msgstr "%s %s"
#: src/backends/meta-monitor.c:270
#: src/backends/meta-monitor-manager.c:1004
#, c-format
msgctxt ""
"This is a monitor vendor name followed by product/model name where size in "
@@ -594,20 +570,15 @@ msgctxt ""
msgid "%s %s"
msgstr "%s %s"
#. Translators: this string will appear in Sysprof
#: src/backends/meta-profiler.c:82
msgid "Compositor"
msgstr "Kompozitor"
#. This probably means that a non-WM compositor like xcompmgr is running;
#. * we have no way to get it to exit
#: src/compositor/compositor.c:510
#: src/compositor/compositor.c:482
#, c-format
msgid ""
"Another compositing manager is already running on screen %i on display “%s”."
msgstr "Jiný kompozitní správce již běží na obrazovce %i displeje „%s“."
#: src/core/bell.c:192
#: src/core/bell.c:252
msgid "Bell event"
msgstr "Událost zvonku"
@@ -656,16 +627,16 @@ msgid "Run with X11 backend"
msgstr "Spustit se serverem X11"
#. Translators: %s is a window title
#: src/core/meta-close-dialog-default.c:151
#: src/core/meta-close-dialog-default.c:150
#, c-format
msgid "“%s” is not responding."
msgstr "„%s“ nereaguje."
#: src/core/meta-close-dialog-default.c:153
#: src/core/meta-close-dialog-default.c:152
msgid "Application is not responding."
msgstr "Aplikace nereaguje."
#: src/core/meta-close-dialog-default.c:158
#: src/core/meta-close-dialog-default.c:157
msgid ""
"You may choose to wait a short while for it to continue or force the "
"application to quit entirely."
@@ -673,11 +644,11 @@ msgstr ""
"Je možné chvíli počkat, aby aplikace mohla pokračovat, nebo si vynutit úplné "
"ukončení aplikace."
#: src/core/meta-close-dialog-default.c:165
#: src/core/meta-close-dialog-default.c:164
msgid "_Force Quit"
msgstr "_Vynutit ukončení"
#: src/core/meta-close-dialog-default.c:165
#: src/core/meta-close-dialog-default.c:164
msgid "_Wait"
msgstr "_Počkat"
@@ -705,7 +676,7 @@ msgstr "Vypsat verzi"
msgid "Mutter plugin to use"
msgstr "Zásuvný modul Mutter, který se má použít"
#: src/core/prefs.c:1849
#: src/core/prefs.c:1786
#, c-format
msgid "Workspace %d"
msgstr "Plocha %d"
@@ -719,7 +690,7 @@ msgstr "Mutter bylo přeloženo bez podpory podrobného režimu\n"
msgid "Mode Switch: Mode %d"
msgstr "Přepínač režimu: režim %d"
#: src/x11/meta-x11-display.c:671
#: src/x11/meta-x11-display.c:666
#, c-format
msgid ""
"Display “%s” already has a window manager; try using the --replace option to "
@@ -728,25 +699,20 @@ msgstr ""
"Displej „%s“ již správce oken má; zkuste prosím nahradit aktuálního správce "
"oken pomocí přepínače --replace."
#: src/x11/meta-x11-display.c:1032
#: src/x11/meta-x11-display.c:1008
msgid "Failed to initialize GDK\n"
msgstr "Selhala inicializace GDK\n"
#: src/x11/meta-x11-display.c:1056
#: src/x11/meta-x11-display.c:1032
#, c-format
msgid "Failed to open X Window System display “%s”\n"
msgstr "Nelze otevřít displej X Window System „%s“\n"
#: src/x11/meta-x11-display.c:1140
#: src/x11/meta-x11-display.c:1115
#, c-format
msgid "Screen %d on display “%s” is invalid\n"
msgstr "Obrazovka %d na displeji „%s“ je neplatná\n"
#: src/x11/meta-x11-selection-input-stream.c:445
#, c-format
msgid "Format %s not supported"
msgstr "Formát %s není podporován"
#: src/x11/session.c:1821
msgid ""
"These windows do not support “save current setup” and will have to be "
@@ -755,7 +721,7 @@ msgstr ""
"Tato okna nepodporují „uložení aktuálního nastavení“ a po svém příštím "
"přihlášení je budete muset spustit ručně."
#: src/x11/window-props.c:569
#: src/x11/window-props.c:568
#, c-format
msgid "%s (on %s)"
msgstr "%s (na %s)"

View File

@@ -7,8 +7,8 @@ msgid ""
msgstr ""
"Project-Id-Version: mutter master\n"
"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/mutter/issues\n"
"POT-Creation-Date: 2019-08-06 00:49+0000\n"
"PO-Revision-Date: 2019-09-03 09:53+0200\n"
"POT-Creation-Date: 2019-07-18 21:05+0000\n"
"PO-Revision-Date: 2019-07-28 10:06+0200\n"
"Last-Translator: Fabio Tomat <f.t.public@gmail.com>\n"
"Language-Team: Friulian <fur@li.org>\n"
"Language: fur\n"
@@ -393,8 +393,7 @@ msgid ""
"space, while scaling monitor framebuffers instead of window content, to "
"manage HiDPI monitors. Does not require a restart. • “rt-scheduler” — makes "
"mutter request a low priority real-time scheduling. The executable or user "
"must have CAP_SYS_NICE. Requires a restart. • “autostart-xwayland” — "
"initializes Xwayland lazily if there are X11 clients. Requires restart."
"must have CAP_SYS_NICE. Requires a restart."
msgstr ""
"Par abilitâ lis funzionalitâts sperimentâls, zonte la peraule clâf de "
"funzionalitât ae liste. Il fat che la funzionalitât e vedi bisugne di tornâ "
@@ -408,31 +407,29 @@ msgstr ""
"dal barcon; dut chest par gjestî i visôrs HiDPI. Nol covente tornâ a inviâ. "
"• “rt-scheduler” — al fâs in mût che mutter al domandi une programazion in "
"timp reâl a prioritât basse. L'eseguibil o l'utent a scugnin vê "
"CAP_SYS_NICE. Al covente tornâ a inviâ. • “autostart-xwayland” — al "
"inizialize Xwayland in maniere sflacjose se a son presints clients X11. Al "
"covente tornâ a inviâ."
"CAP_SYS_NICE. Al covente tornâ a inviâ."
#: data/org.gnome.mutter.gschema.xml.in:134
#: data/org.gnome.mutter.gschema.xml.in:132
msgid "Modifier to use to locate the pointer"
msgstr "Modificadôr di doprâ par localizâ il pontadôr"
#: data/org.gnome.mutter.gschema.xml.in:135
#: data/org.gnome.mutter.gschema.xml.in:133
msgid "This key will initiate the “locate pointer” action."
msgstr "Cheste clâf e inizializerâ la azion “localize pontadôr”."
#: data/org.gnome.mutter.gschema.xml.in:155
#: data/org.gnome.mutter.gschema.xml.in:153
msgid "Select window from tab popup"
msgstr "Selezione barcon dal tab popup"
#: data/org.gnome.mutter.gschema.xml.in:160
#: data/org.gnome.mutter.gschema.xml.in:158
msgid "Cancel tab popup"
msgstr "Anule tab popup"
#: data/org.gnome.mutter.gschema.xml.in:165
#: data/org.gnome.mutter.gschema.xml.in:163
msgid "Switch monitor configurations"
msgstr "Cambie configurazions visôr"
#: data/org.gnome.mutter.gschema.xml.in:170
#: data/org.gnome.mutter.gschema.xml.in:168
msgid "Rotates the built-in monitor configuration"
msgstr "Al volte la configurazion dal visôr integrât"
@@ -715,7 +712,7 @@ msgstr "Mutter al è stât compilât cence supuart pe modalitât fetose\n"
msgid "Mode Switch: Mode %d"
msgstr "Cambie mût: mût %d"
#: src/x11/meta-x11-display.c:671
#: src/x11/meta-x11-display.c:682
#, c-format
msgid ""
"Display “%s” already has a window manager; try using the --replace option to "
@@ -724,16 +721,16 @@ msgstr ""
"Il display “%s” al à za un window manager; prove dopre la opzion --replace "
"par rimplaçâ chel atuâl."
#: src/x11/meta-x11-display.c:1032
#: src/x11/meta-x11-display.c:1024
msgid "Failed to initialize GDK\n"
msgstr "No si è rivâts a inizializâ GDK\n"
#: src/x11/meta-x11-display.c:1056
#: src/x11/meta-x11-display.c:1048
#, c-format
msgid "Failed to open X Window System display “%s”\n"
msgstr "Impussibil vierzi il display “%s” di X Window System\n"
#: src/x11/meta-x11-display.c:1140
#: src/x11/meta-x11-display.c:1132
#, c-format
msgid "Screen %d on display “%s” is invalid\n"
msgstr "Schermi %d su display “%s” no valit\n"

View File

@@ -5,9 +5,9 @@ msgid ""
msgstr ""
"Project-Id-Version: metacity 0\n"
"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/mutter/issues\n"
"POT-Creation-Date: 2019-08-06 00:49+0000\n"
"PO-Revision-Date: 2019-09-03 18:00+0200\n"
"Last-Translator: gogo <linux.hr@protonmail.com>\n"
"POT-Creation-Date: 2019-06-20 08:28+0000\n"
"PO-Revision-Date: 2019-06-22 18:00+0200\n"
"Last-Translator: gogo <trebelnik2@gmail.com>\n"
"Language-Team: Croatian <lokalizacija@linux.hr>\n"
"Language: hr\n"
"MIME-Version: 1.0\n"
@@ -392,8 +392,7 @@ msgid ""
"space, while scaling monitor framebuffers instead of window content, to "
"manage HiDPI monitors. Does not require a restart. • “rt-scheduler” — makes "
"mutter request a low priority real-time scheduling. The executable or user "
"must have CAP_SYS_NICE. Requires a restart. • “autostart-xwayland” — "
"initializes Xwayland lazily if there are X11 clients. Requires restart."
"must have CAP_SYS_NICE. Requires a restart."
msgstr ""
"Za omogućavanje eksperimentalnih značajki, dodajte ključnu riječ značajke na "
"popis. Zahtijeva li značajka ponovno pokretanje kompozitora ovisi o zadanoj "
@@ -406,30 +405,29 @@ msgstr ""
"zaslonima visoke razlučivosti. Ne zahtijeva ponovno pokretanje. • “rt-"
"scheduler” — čini zahtjeve muttera zakazanima u niskom prioritetu i "
"stvaranom vremenu. Izvršitelj ili korisnik mora imati CAP_SYS_NICE. "
"Zahtijeva ponovno pokretanje. • “autostart-xwayland” — pokreće Xwayland "
"lijeno ako je dostupan X11 klijent. Zahtijeva ponovno pokretanje."
"Zahtijeva ponovno pokretanje."
#: data/org.gnome.mutter.gschema.xml.in:134
#: data/org.gnome.mutter.gschema.xml.in:132
msgid "Modifier to use to locate the pointer"
msgstr "Izmjenjivač za korištenje lociranja pokazivača"
#: data/org.gnome.mutter.gschema.xml.in:135
#: data/org.gnome.mutter.gschema.xml.in:133
msgid "This key will initiate the “locate pointer” action."
msgstr "Ova tipka će pokrenuti “lociraj pokazivač” radnju."
#: data/org.gnome.mutter.gschema.xml.in:155
#: data/org.gnome.mutter.gschema.xml.in:153
msgid "Select window from tab popup"
msgstr "Odaberi prozor iz skočnog prozora"
#: data/org.gnome.mutter.gschema.xml.in:160
#: data/org.gnome.mutter.gschema.xml.in:158
msgid "Cancel tab popup"
msgstr "Prekini skočni prozor"
#: data/org.gnome.mutter.gschema.xml.in:165
#: data/org.gnome.mutter.gschema.xml.in:163
msgid "Switch monitor configurations"
msgstr "Prebacivanje podešavanja zaslona"
#: data/org.gnome.mutter.gschema.xml.in:170
#: data/org.gnome.mutter.gschema.xml.in:168
msgid "Rotates the built-in monitor configuration"
msgstr "Rotiraj ugrađeno podešavanje zaslona"
@@ -542,7 +540,7 @@ msgstr ""
#. TRANSLATORS: This string refers to a button that switches between
#. * different modes.
#.
#: src/backends/meta-input-settings.c:2531
#: src/backends/meta-input-settings.c:2529
#, c-format
msgid "Mode Switch (Group %d)"
msgstr "Način prebacivanja (Grupa %d)"
@@ -550,34 +548,34 @@ msgstr "Način prebacivanja (Grupa %d)"
#. TRANSLATORS: This string refers to an action, cycles drawing tablets'
#. * mapping through the available outputs.
#.
#: src/backends/meta-input-settings.c:2554
#: src/backends/meta-input-settings.c:2552
msgid "Switch monitor"
msgstr "Prebaci zaslon"
#: src/backends/meta-input-settings.c:2556
#: src/backends/meta-input-settings.c:2554
msgid "Show on-screen help"
msgstr "Prikaži zaslonsku pomoć"
#: src/backends/meta-monitor.c:223
#: src/backends/meta-monitor-manager.c:976
msgid "Built-in display"
msgstr "Ugrađeni zaslon"
#: src/backends/meta-monitor.c:252
#: src/backends/meta-monitor-manager.c:1008
msgid "Unknown"
msgstr "Nepoznat"
#: src/backends/meta-monitor.c:254
#: src/backends/meta-monitor-manager.c:1010
msgid "Unknown Display"
msgstr "Nepoznat zaslon"
#: src/backends/meta-monitor.c:262
#: src/backends/meta-monitor-manager.c:1018
#, c-format
msgctxt ""
"This is a monitor vendor name, followed by a size in inches, like 'Dell 15\"'"
msgid "%s %s"
msgstr "%s %s"
#: src/backends/meta-monitor.c:270
#: src/backends/meta-monitor-manager.c:1026
#, c-format
msgctxt ""
"This is a monitor vendor name followed by product/model name where size in "
@@ -696,7 +694,7 @@ msgstr "Inačica za ispis"
msgid "Mutter plugin to use"
msgstr "Mutter priključak koji se koristi"
#: src/core/prefs.c:1849
#: src/core/prefs.c:1834
#, c-format
msgid "Workspace %d"
msgstr "Radni prostor %d"
@@ -710,7 +708,7 @@ msgstr "Mutter je kompiliran bez podrške za opširan način rada\n"
msgid "Mode Switch: Mode %d"
msgstr "Način prebacivanja: Način %d"
#: src/x11/meta-x11-display.c:671
#: src/x11/meta-x11-display.c:681
#, c-format
msgid ""
"Display “%s” already has a window manager; try using the --replace option to "
@@ -719,16 +717,16 @@ msgstr ""
"Prikaz \"%s\" već ima upravitelja prozora; pokušajte koristiti --replace "
"mogućnost za zamjenu trenutnog upravitelja prozora."
#: src/x11/meta-x11-display.c:1032
#: src/x11/meta-x11-display.c:1023
msgid "Failed to initialize GDK\n"
msgstr "Neuspjelo GDK pokretanje\n"
#: src/x11/meta-x11-display.c:1056
#: src/x11/meta-x11-display.c:1047
#, c-format
msgid "Failed to open X Window System display “%s”\n"
msgstr "Neuspjelo otvaranje sustava prikaza X prozora \"%s\"\n"
#: src/x11/meta-x11-display.c:1140
#: src/x11/meta-x11-display.c:1131
#, c-format
msgid "Screen %d on display “%s” is invalid\n"
msgstr "Zaslon %d na prikazu '%s' je neispravan\n"

View File

@@ -388,10 +388,4 @@ gboolean meta_monitor_has_aspect_as_size (MetaMonitor *monitor);
char * meta_monitor_manager_get_vendor_name (MetaMonitorManager *manager,
const char *vendor);
gboolean meta_monitor_manager_get_has_changed (MetaMonitorManager *manager,
MetaCrtcInfo **crtc_infos,
unsigned int n_crtc_infos,
MetaOutputInfo **output_infos,
unsigned int n_output_infos);
#endif /* META_MONITOR_MANAGER_PRIVATE_H */

View File

@@ -483,158 +483,6 @@ meta_monitor_manager_ensure_initial_config (MetaMonitorManager *manager)
META_MONITOR_MANAGER_GET_CLASS (manager)->ensure_initial_config (manager);
}
static gboolean
is_crtc_assignment_changed (MetaCrtc *crtc,
MetaCrtcInfo **crtc_infos,
unsigned int n_crtc_infos)
{
unsigned int i;
for (i = 0; i < n_crtc_infos; i++)
{
MetaCrtcInfo *crtc_info = crtc_infos[i];
unsigned int j;
if (crtc_info->crtc != crtc)
continue;
if (crtc->current_mode != crtc_info->mode)
return TRUE;
if (crtc->rect.x != crtc_info->x)
return TRUE;
if (crtc->rect.y != crtc_info->y)
return TRUE;
if (crtc->transform != crtc_info->transform)
return TRUE;
for (j = 0; j < crtc_info->outputs->len; j++)
{
MetaOutput *output = ((MetaOutput**) crtc_info->outputs->pdata)[j];
MetaCrtc *assigned_crtc;
assigned_crtc = meta_output_get_assigned_crtc (output);
if (assigned_crtc != crtc)
return TRUE;
}
return FALSE;
}
return crtc->current_mode != NULL;
}
static gboolean
is_output_assignment_changed (MetaOutput *output,
MetaCrtcInfo **crtc_infos,
unsigned int n_crtc_infos,
MetaOutputInfo **output_infos,
unsigned int n_output_infos)
{
MetaCrtc *assigned_crtc;
gboolean output_is_found = FALSE;
unsigned int i;
for (i = 0; i < n_output_infos; i++)
{
MetaOutputInfo *output_info = output_infos[i];
if (output_info->output != output)
continue;
if (output->is_primary != output_info->is_primary)
return TRUE;
if (output->is_presentation != output_info->is_presentation)
return TRUE;
if (output->is_underscanning != output_info->is_underscanning)
return TRUE;
output_is_found = TRUE;
}
assigned_crtc = meta_output_get_assigned_crtc (output);
if (!output_is_found)
return assigned_crtc != NULL;
for (i = 0; i < n_crtc_infos; i++)
{
MetaCrtcInfo *crtc_info = crtc_infos[i];
unsigned int j;
for (j = 0; j < crtc_info->outputs->len; j++)
{
MetaOutput *crtc_info_output =
((MetaOutput**) crtc_info->outputs->pdata)[j];
if (crtc_info_output == output &&
crtc_info->crtc == assigned_crtc)
return FALSE;
}
}
return TRUE;
}
static gboolean
is_assignments_changed (MetaMonitorManager *manager,
MetaGpu *gpu,
MetaCrtcInfo **crtc_infos,
unsigned int n_crtc_infos,
MetaOutputInfo **output_infos,
unsigned int n_output_infos)
{
GList *l;
for (l = meta_gpu_get_crtcs (gpu); l; l = l->next)
{
MetaCrtc *crtc = l->data;
if (is_crtc_assignment_changed (crtc, crtc_infos, n_crtc_infos))
return TRUE;
}
for (l = meta_gpu_get_outputs (gpu); l; l = l->next)
{
MetaOutput *output = l->data;
if (is_output_assignment_changed (output,
crtc_infos,
n_crtc_infos,
output_infos,
n_output_infos))
return TRUE;
}
return FALSE;
}
gboolean
meta_monitor_manager_get_has_changed (MetaMonitorManager *manager,
MetaCrtcInfo **crtc_infos,
unsigned int n_crtc_infos,
MetaOutputInfo **output_infos,
unsigned int n_output_infos)
{
GList *gpus;
GList *l;
gpus = meta_backend_get_gpus (manager->backend);
for (l = gpus; l; l = l->next)
{
if (is_assignments_changed (manager, l->data,
crtc_infos, n_crtc_infos,
output_infos, n_output_infos))
return TRUE;
}
return FALSE;
}
static gboolean
meta_monitor_manager_apply_monitors_config (MetaMonitorManager *manager,
MetaMonitorsConfig *config,

View File

@@ -821,7 +821,6 @@ void meta_backend_native_resume (MetaBackendNative *native)
META_MONITOR_MANAGER_KMS (monitor_manager);
MetaInputSettings *input_settings;
MetaIdleMonitor *idle_monitor;
ClutterDeviceManager *device_manager;
COGL_TRACE_BEGIN_SCOPED (MetaBackendNativeResume,
"Backend (resume)");
@@ -840,7 +839,4 @@ void meta_backend_native_resume (MetaBackendNative *native)
input_settings = meta_backend_get_input_settings (backend);
meta_input_settings_maybe_restore_numlock_state (input_settings);
device_manager = clutter_device_manager_get_default ();
clutter_device_manager_ensure_a11y_state (device_manager);
}

View File

@@ -29,4 +29,7 @@ MetaKmsConnector * meta_kms_connector_new (MetaKmsImplDevice *impl_device,
drmModeConnector *drm_connector,
drmModeRes *drm_resources);
gboolean meta_kms_connector_is_same_as (MetaKmsConnector *connector,
drmModeConnector *drm_connector);
#endif /* META_KMS_CONNECTOR_PRIVATE_H */

View File

@@ -36,6 +36,7 @@ struct _MetaKmsConnector
uint32_t id;
MetaConnectorType type;
uint32_t type_id;
char *name;
MetaKmsConnectorState *current_state;
@@ -562,6 +563,15 @@ make_connector_name (drmModeConnector *drm_connector)
drm_connector->connector_type_id);
}
gboolean
meta_kms_connector_is_same_as (MetaKmsConnector *connector,
drmModeConnector *drm_connector)
{
return (connector->id == drm_connector->connector_id &&
connector->type == drm_connector->connector_type &&
connector->type_id == drm_connector->connector_type_id);
}
MetaKmsConnector *
meta_kms_connector_new (MetaKmsImplDevice *impl_device,
drmModeConnector *drm_connector,
@@ -573,6 +583,7 @@ meta_kms_connector_new (MetaKmsImplDevice *impl_device,
connector->device = meta_kms_impl_device_get_device (impl_device);
connector->id = drm_connector->connector_id;
connector->type = (MetaConnectorType) drm_connector->connector_type;
connector->type_id = drm_connector->connector_type_id;
connector->name = make_connector_name (drm_connector);
find_property_ids (connector, impl_device, drm_connector);

View File

@@ -24,4 +24,7 @@
MetaKmsImplDevice * meta_kms_device_get_impl_device (MetaKmsDevice *device);
void meta_kms_device_update_states_in_impl (MetaKmsDevice *device,
MetaKmsUpdateStatesFlags flags);
#endif /* META_KMS_DEVICE_PRIVATE_H */

View File

@@ -108,6 +108,31 @@ meta_kms_device_get_primary_plane_for (MetaKmsDevice *device,
return NULL;
}
void
meta_kms_device_update_states_in_impl (MetaKmsDevice *device,
MetaKmsUpdateStatesFlags flags)
{
MetaKmsImplDevice *impl_device = meta_kms_device_get_impl_device (device);
meta_assert_in_kms_impl (device->kms);
meta_kms_impl_device_update_states (impl_device, flags);
if (flags & META_KMS_UPDATE_STATES_FLAG_HOTPLUG)
{
meta_assert_is_waiting_for_kms_impl_task (device->kms);
g_list_free (device->crtcs);
device->crtcs = meta_kms_impl_device_copy_crtcs (impl_device);
g_list_free (device->connectors);
device->connectors = meta_kms_impl_device_copy_connectors (impl_device);
g_list_free (device->planes);
device->planes = meta_kms_impl_device_copy_planes (impl_device);
}
}
static gboolean
dispatch_in_impl (MetaKmsImpl *impl,
gpointer user_data,

View File

@@ -196,10 +196,28 @@ init_crtcs (MetaKmsImplDevice *impl_device,
impl_device->crtcs = g_list_reverse (impl_device->crtcs);
}
static void
init_connectors (MetaKmsImplDevice *impl_device,
drmModeRes *drm_resources)
static MetaKmsConnector *
find_existing_connector (MetaKmsImplDevice *impl_device,
drmModeConnector *drm_connector)
{
GList *l;
for (l = impl_device->connectors; l; l = l->next)
{
MetaKmsConnector *connector = l->data;
if (meta_kms_connector_is_same_as (connector, drm_connector))
return connector;
}
return NULL;
}
static void
update_connectors (MetaKmsImplDevice *impl_device,
drmModeRes *drm_resources)
{
GList *connectors = NULL;
unsigned int i;
for (i = 0; i < drm_resources->count_connectors; i++)
@@ -212,14 +230,19 @@ init_connectors (MetaKmsImplDevice *impl_device,
if (!drm_connector)
continue;
connector = meta_kms_connector_new (impl_device, drm_connector,
drm_resources);
connector = find_existing_connector (impl_device, drm_connector);
if (connector)
connector = g_object_ref (connector);
else
connector = meta_kms_connector_new (impl_device, drm_connector,
drm_resources);
drmModeFreeConnector (drm_connector);
impl_device->connectors = g_list_prepend (impl_device->connectors,
connector);
connectors = g_list_prepend (connectors, connector);
}
impl_device->connectors = g_list_reverse (impl_device->connectors);
g_list_free_full (impl_device->connectors, g_object_unref);
impl_device->connectors = g_list_reverse (connectors);
}
static MetaKmsPlaneType
@@ -295,13 +318,18 @@ init_planes (MetaKmsImplDevice *impl_device)
}
void
meta_kms_impl_device_update_states (MetaKmsImplDevice *impl_device)
meta_kms_impl_device_update_states (MetaKmsImplDevice *impl_device,
MetaKmsUpdateStatesFlags flags)
{
drmModeRes *drm_resources;
meta_assert_in_kms_impl (meta_kms_impl_get_kms (impl_device->impl));
drm_resources = drmModeGetResources (impl_device->fd);
if (flags & META_KMS_UPDATE_STATES_FLAG_HOTPLUG)
update_connectors (impl_device, drm_resources);
g_list_foreach (impl_device->crtcs, (GFunc) meta_kms_crtc_update_state,
NULL);
g_list_foreach (impl_device->connectors, (GFunc) meta_kms_connector_update_state,
@@ -346,9 +374,10 @@ meta_kms_impl_device_new (MetaKmsDevice *device,
impl_device->fd = fd;
init_crtcs (impl_device, drm_resources);
init_connectors (impl_device, drm_resources);
init_planes (impl_device);
update_connectors (impl_device, drm_resources);
drmModeFreeResources (drm_resources);
impl_device->fd_source =

View File

@@ -53,7 +53,8 @@ int meta_kms_impl_device_get_fd (MetaKmsImplDevice *impl_device);
int meta_kms_impl_device_leak_fd (MetaKmsImplDevice *impl_device);
void meta_kms_impl_device_update_states (MetaKmsImplDevice *impl_device);
void meta_kms_impl_device_update_states (MetaKmsImplDevice *impl_device,
MetaKmsUpdateStatesFlags flags);
int meta_kms_impl_device_close (MetaKmsImplDevice *impl_device);

View File

@@ -55,9 +55,13 @@ GSource * meta_kms_register_fd_in_impl (MetaKms *kms,
gboolean meta_kms_in_impl_task (MetaKms *kms);
gboolean meta_kms_is_waiting_for_impl_task (MetaKms *kms);
#define meta_assert_in_kms_impl(kms) \
g_assert (meta_kms_in_impl_task (kms))
#define meta_assert_not_in_kms_impl(kms) \
g_assert (!meta_kms_in_impl_task (kms))
#define meta_assert_is_waiting_for_kms_impl_task(kms) \
g_assert (meta_kms_is_waiting_for_impl_task (kms))
#endif /* META_KMS_PRIVATE_H */

View File

@@ -56,4 +56,10 @@ typedef enum _MetaKmsDeviceFlag
META_KMS_DEVICE_FLAG_PLATFORM_DEVICE = 1 << 1,
} MetaKmsDeviceFlag;
typedef enum _MetaKmsUpdateStatesFlags
{
META_KMS_UPDATE_STATES_FLAG_NONE = 0,
META_KMS_UPDATE_STATES_FLAG_HOTPLUG = 1 << 0,
} MetaKmsUpdateStatesFlags;
#endif /* META_KMS_IMPL_TYPES_H */

View File

@@ -119,6 +119,15 @@
*
*/
enum
{
RESOURCES_CHANGED,
N_SIGNALS
};
static int signals[N_SIGNALS];
typedef struct _MetaKmsCallbackData
{
MetaKmsCallback callback;
@@ -154,6 +163,7 @@ struct _MetaKms
MetaKmsImpl *impl;
gboolean in_impl_task;
gboolean waiting_for_impl_task;
GList *devices;
@@ -166,7 +176,8 @@ struct _MetaKms
G_DEFINE_TYPE (MetaKms, meta_kms, G_TYPE_OBJECT)
static void
meta_kms_update_states_in_impl (MetaKms *kms);
meta_kms_update_states_in_impl (MetaKms *kms,
MetaKmsUpdateStatesFlags flags);
MetaKmsUpdate *
meta_kms_ensure_pending_update (MetaKms *kms)
@@ -194,7 +205,8 @@ meta_kms_update_process_in_impl (MetaKmsImpl *impl,
ret = meta_kms_impl_process_update (impl, update, error);
if (meta_kms_update_has_mode_set (update))
meta_kms_update_states_in_impl (meta_kms_impl_get_kms (impl));
meta_kms_update_states_in_impl (meta_kms_impl_get_kms (impl),
META_KMS_UPDATE_STATES_FLAG_NONE);
return ret;
}
@@ -322,7 +334,9 @@ meta_kms_run_impl_task_sync (MetaKms *kms,
gboolean ret;
kms->in_impl_task = TRUE;
kms->waiting_for_impl_task = TRUE;
ret = func (kms->impl, user_data, error);
kms->waiting_for_impl_task = FALSE;
kms->in_impl_task = FALSE;
return ret;
@@ -440,8 +454,15 @@ meta_kms_in_impl_task (MetaKms *kms)
return kms->in_impl_task;
}
gboolean
meta_kms_is_waiting_for_impl_task (MetaKms *kms)
{
return kms->waiting_for_impl_task;
}
static void
meta_kms_update_states_in_impl (MetaKms *kms)
meta_kms_update_states_in_impl (MetaKms *kms,
MetaKmsUpdateStatesFlags flags)
{
GList *l;
@@ -453,9 +474,8 @@ meta_kms_update_states_in_impl (MetaKms *kms)
for (l = kms->devices; l; l = l->next)
{
MetaKmsDevice *device = l->data;
MetaKmsImplDevice *impl_device = meta_kms_device_get_impl_device (device);
meta_kms_impl_device_update_states (impl_device);
meta_kms_device_update_states_in_impl (device, flags);
}
}
@@ -464,20 +484,22 @@ update_states_in_impl (MetaKmsImpl *impl,
gpointer user_data,
GError **error)
{
MetaKms *kms = user_data;
MetaKms *kms = meta_kms_impl_get_kms (impl);;
MetaKmsUpdateStatesFlags flags = GPOINTER_TO_UINT (user_data);
meta_kms_update_states_in_impl (kms);
meta_kms_update_states_in_impl (kms, flags);
return TRUE;
}
static gboolean
meta_kms_update_states_sync (MetaKms *kms,
GError **error)
meta_kms_update_states_sync (MetaKms *kms,
MetaKmsUpdateStatesFlags flags,
GError **error)
{
return meta_kms_run_impl_task_sync (kms,
update_states_in_impl,
kms,
GUINT_TO_POINTER (flags),
error);
}
@@ -486,8 +508,12 @@ handle_hotplug_event (MetaKms *kms)
{
g_autoptr (GError) error = NULL;
if (!meta_kms_update_states_sync (kms, &error))
if (!meta_kms_update_states_sync (kms,
META_KMS_UPDATE_STATES_FLAG_HOTPLUG,
&error))
g_warning ("Updating KMS state failed: %s", error->message);
g_signal_emit (kms, signals[RESOURCES_CHANGED], 0);
}
static void
@@ -590,4 +616,12 @@ meta_kms_class_init (MetaKmsClass *klass)
GObjectClass *object_class = G_OBJECT_CLASS (klass);
object_class->finalize = meta_kms_finalize;
signals[RESOURCES_CHANGED] =
g_signal_new ("resources-changed",
G_TYPE_FROM_CLASS (klass),
G_SIGNAL_RUN_LAST,
0,
NULL, NULL, NULL,
G_TYPE_NONE, 0);
}

View File

@@ -75,10 +75,7 @@ struct _MetaMonitorManagerKms
{
MetaMonitorManager parent_instance;
guint hotplug_handler_id;
guint removed_handler_id;
guint logical_monitors_invalid : 1;
gulong kms_resources_changed_handler_id;
};
struct _MetaMonitorManagerKmsClass
@@ -324,7 +321,6 @@ meta_monitor_manager_kms_apply_monitors_config (MetaMonitorManager *manager
MetaMonitorsConfigMethod method,
GError **error)
{
MetaMonitorManagerKms *manager_kms = META_MONITOR_MANAGER_KMS (manager);
GPtrArray *crtc_infos;
GPtrArray *output_infos;
@@ -348,26 +344,6 @@ meta_monitor_manager_kms_apply_monitors_config (MetaMonitorManager *manager
return TRUE;
}
if (!meta_monitor_manager_get_has_changed (manager,
(MetaCrtcInfo **) crtc_infos->pdata,
crtc_infos->len,
(MetaOutputInfo **) output_infos->pdata,
output_infos->len))
{
/* Rebuild logical monitors if invalid, i.e. after
* meta_monitor_manager_read_current_state().
*/
if (manager_kms->logical_monitors_invalid)
{
meta_monitor_manager_rebuild (manager, config);
manager_kms->logical_monitors_invalid = FALSE;
}
g_ptr_array_free (crtc_infos, TRUE);
g_ptr_array_free (output_infos, TRUE);
return TRUE;
}
apply_crtc_assignments (manager,
(MetaCrtcInfo **) crtc_infos->pdata,
crtc_infos->len,
@@ -379,7 +355,6 @@ meta_monitor_manager_kms_apply_monitors_config (MetaMonitorManager *manager
update_screen_size (manager, config);
meta_monitor_manager_rebuild (manager, config);
manager_kms->logical_monitors_invalid = FALSE;
return TRUE;
}
@@ -498,28 +473,13 @@ meta_monitor_manager_kms_set_crtc_gamma (MetaMonitorManager *manager,
static void
handle_hotplug_event (MetaMonitorManager *manager)
{
MetaMonitorManagerKms *manager_kms = META_MONITOR_MANAGER_KMS (manager);
/* read_current_state() will rebuild monitors, leaving MetaLogicalMonitors
* with stale pointers to those. We will need to rebuild those even though
* the configuration might not have actually changed (eg. tty switch).
*/
manager_kms->logical_monitors_invalid = TRUE;
meta_monitor_manager_read_current_state (manager);
meta_monitor_manager_on_hotplug (manager);
}
static void
on_udev_hotplug (MetaUdev *udev,
MetaMonitorManager *manager)
{
handle_hotplug_event (manager);
}
static void
on_udev_device_removed (MetaUdev *udev,
GUdevDevice *device,
MetaMonitorManager *manager)
on_kms_resources_changed (MetaKms *kms,
MetaMonitorManager *manager)
{
handle_hotplug_event (manager);
}
@@ -529,14 +489,12 @@ meta_monitor_manager_kms_connect_hotplug_handler (MetaMonitorManagerKms *manager
{
MetaMonitorManager *manager = META_MONITOR_MANAGER (manager_kms);
MetaBackend *backend = meta_monitor_manager_get_backend (manager);
MetaUdev *udev = meta_backend_native_get_udev (META_BACKEND_NATIVE (backend));
MetaBackendNative *backend_native = META_BACKEND_NATIVE (backend);
MetaKms *kms = meta_backend_native_get_kms (backend_native);
manager_kms->hotplug_handler_id =
g_signal_connect_after (udev, "hotplug",
G_CALLBACK (on_udev_hotplug), manager);
manager_kms->removed_handler_id =
g_signal_connect_after (udev, "device-removed",
G_CALLBACK (on_udev_device_removed), manager);
manager_kms->kms_resources_changed_handler_id =
g_signal_connect (kms, "resources-changed",
G_CALLBACK (on_kms_resources_changed), manager);
}
static void
@@ -544,12 +502,10 @@ meta_monitor_manager_kms_disconnect_hotplug_handler (MetaMonitorManagerKms *mana
{
MetaMonitorManager *manager = META_MONITOR_MANAGER (manager_kms);
MetaBackend *backend = meta_monitor_manager_get_backend (manager);
MetaUdev *udev = meta_backend_native_get_udev (META_BACKEND_NATIVE (backend));
MetaBackendNative *backend_native = META_BACKEND_NATIVE (backend);
MetaKms *kms = meta_backend_native_get_kms (backend_native);
g_signal_handler_disconnect (udev, manager_kms->hotplug_handler_id);
manager_kms->hotplug_handler_id = 0;
g_signal_handler_disconnect (udev, manager_kms->removed_handler_id);
manager_kms->removed_handler_id = 0;
g_clear_signal_handler (&manager_kms->kms_resources_changed_handler_id, kms);
}
void

View File

@@ -240,6 +240,103 @@ xrandr_set_crtc_config (MetaMonitorManagerXrandr *manager_xrandr,
return TRUE;
}
static gboolean
is_crtc_assignment_changed (MetaCrtc *crtc,
MetaCrtcInfo **crtc_infos,
unsigned int n_crtc_infos)
{
unsigned int i;
for (i = 0; i < n_crtc_infos; i++)
{
MetaCrtcInfo *crtc_info = crtc_infos[i];
unsigned int j;
if (crtc_info->crtc != crtc)
continue;
if (crtc->current_mode != crtc_info->mode)
return TRUE;
if (crtc->rect.x != crtc_info->x)
return TRUE;
if (crtc->rect.y != crtc_info->y)
return TRUE;
if (crtc->transform != crtc_info->transform)
return TRUE;
for (j = 0; j < crtc_info->outputs->len; j++)
{
MetaOutput *output = ((MetaOutput**) crtc_info->outputs->pdata)[j];
MetaCrtc *assigned_crtc;
assigned_crtc = meta_output_get_assigned_crtc (output);
if (assigned_crtc != crtc)
return TRUE;
}
return FALSE;
}
return crtc->current_mode != NULL;
}
static gboolean
is_output_assignment_changed (MetaOutput *output,
MetaCrtcInfo **crtc_infos,
unsigned int n_crtc_infos,
MetaOutputInfo **output_infos,
unsigned int n_output_infos)
{
MetaCrtc *assigned_crtc;
gboolean output_is_found = FALSE;
unsigned int i;
for (i = 0; i < n_output_infos; i++)
{
MetaOutputInfo *output_info = output_infos[i];
if (output_info->output != output)
continue;
if (output->is_primary != output_info->is_primary)
return TRUE;
if (output->is_presentation != output_info->is_presentation)
return TRUE;
if (output->is_underscanning != output_info->is_underscanning)
return TRUE;
output_is_found = TRUE;
}
assigned_crtc = meta_output_get_assigned_crtc (output);
if (!output_is_found)
return assigned_crtc != NULL;
for (i = 0; i < n_crtc_infos; i++)
{
MetaCrtcInfo *crtc_info = crtc_infos[i];
unsigned int j;
for (j = 0; j < crtc_info->outputs->len; j++)
{
MetaOutput *crtc_info_output =
((MetaOutput**) crtc_info->outputs->pdata)[j];
if (crtc_info_output == output &&
crtc_info->crtc == assigned_crtc)
return FALSE;
}
}
return TRUE;
}
static MetaGpu *
meta_monitor_manager_xrandr_get_gpu (MetaMonitorManagerXrandr *manager_xrandr)
{
@@ -249,6 +346,41 @@ meta_monitor_manager_xrandr_get_gpu (MetaMonitorManagerXrandr *manager_xrandr)
return META_GPU (meta_backend_get_gpus (backend)->data);
}
static gboolean
is_assignments_changed (MetaMonitorManager *manager,
MetaCrtcInfo **crtc_infos,
unsigned int n_crtc_infos,
MetaOutputInfo **output_infos,
unsigned int n_output_infos)
{
MetaMonitorManagerXrandr *manager_xrandr =
META_MONITOR_MANAGER_XRANDR (manager);
MetaGpu *gpu = meta_monitor_manager_xrandr_get_gpu (manager_xrandr);
GList *l;
for (l = meta_gpu_get_crtcs (gpu); l; l = l->next)
{
MetaCrtc *crtc = l->data;
if (is_crtc_assignment_changed (crtc, crtc_infos, n_crtc_infos))
return TRUE;
}
for (l = meta_gpu_get_outputs (gpu); l; l = l->next)
{
MetaOutput *output = l->data;
if (is_output_assignment_changed (output,
crtc_infos,
n_crtc_infos,
output_infos,
n_output_infos))
return TRUE;
}
return FALSE;
}
static void
apply_crtc_assignments (MetaMonitorManager *manager,
gboolean save_timestamp,
@@ -519,11 +651,11 @@ meta_monitor_manager_xrandr_apply_monitors_config (MetaMonitorManager *mana
* must check that our new assignment actually changes anything, otherwise
* just update the logical state.
*/
if (meta_monitor_manager_get_has_changed (manager,
(MetaCrtcInfo **) crtc_infos->pdata,
crtc_infos->len,
(MetaOutputInfo **) output_infos->pdata,
output_infos->len))
if (is_assignments_changed (manager,
(MetaCrtcInfo **) crtc_infos->pdata,
crtc_infos->len,
(MetaOutputInfo **) output_infos->pdata,
output_infos->len))
{
apply_crtc_assignments (manager,
TRUE,

View File

@@ -52,7 +52,6 @@
#include "clutter/x11/clutter-x11.h"
#include "compositor/compositor-private.h"
#include "compositor/meta-compositor-x11.h"
#include "cogl/cogl-trace.h"
#include "core/bell.h"
#include "core/boxes-private.h"
#include "core/display-private.h"
@@ -1482,8 +1481,6 @@ void
meta_display_notify_window_created (MetaDisplay *display,
MetaWindow *window)
{
COGL_TRACE_BEGIN_SCOPED (MetaDisplayNotifyWindowCreated,
"Display (notify window created)");
g_signal_emit (display, display_signals[WINDOW_CREATED], 0, window);
}

View File

@@ -30,7 +30,6 @@
#include "core/stack.h"
#include "backends/meta-logical-monitor.h"
#include "cogl/cogl-trace.h"
#include "core/frame.h"
#include "core/meta-workspace-manager-private.h"
#include "core/window-private.h"
@@ -276,9 +275,6 @@ meta_stack_add (MetaStack *stack,
{
MetaWorkspaceManager *workspace_manager = window->display->workspace_manager;
COGL_TRACE_BEGIN_SCOPED (MetaStackAdd,
"Stack (add window)");
g_return_if_fail (meta_window_is_stackable (window));
meta_topic (META_DEBUG_STACK, "Adding window %s to the stack\n", window->desc);
@@ -309,9 +305,6 @@ meta_stack_remove (MetaStack *stack,
{
MetaWorkspaceManager *workspace_manager = window->display->workspace_manager;
COGL_TRACE_BEGIN_SCOPED (MetaStackRemove,
"Stack (remove window)");
meta_topic (META_DEBUG_STACK, "Removing window %s from the stack\n", window->desc);
/* Set window to top position, so removing it will not leave gaps

View File

@@ -67,7 +67,6 @@
#include "backends/meta-backend-private.h"
#include "backends/meta-logical-monitor.h"
#include "cogl/cogl-trace.h"
#include "core/boxes-private.h"
#include "core/constraints.h"
#include "core/core.h"
@@ -948,15 +947,6 @@ meta_window_calculate_main_logical_monitor (MetaWindow *window)
&window_rect);
}
static void
meta_window_manage (MetaWindow *window)
{
COGL_TRACE_BEGIN_SCOPED (MetaWindowManage,
"Window (manage)");
META_WINDOW_GET_CLASS (window)->manage (window);
}
MetaWindow *
_meta_window_shared_new (MetaDisplay *display,
MetaWindowClientType client_type,
@@ -969,9 +959,6 @@ _meta_window_shared_new (MetaDisplay *display,
MetaWorkspaceManager *workspace_manager = display->workspace_manager;
MetaWindow *window;
COGL_TRACE_BEGIN_SCOPED (MetaWindowSharedNew,
"Window (new)");
g_assert (attrs != NULL);
meta_verbose ("attrs->map_state = %d (%s)\n",
@@ -1184,7 +1171,7 @@ _meta_window_shared_new (MetaDisplay *display,
window->id = meta_display_generate_window_id (display);
meta_window_manage (window);
META_WINDOW_GET_CLASS (window)->manage (window);
if (!window->override_redirect)
meta_window_update_icon_now (window, TRUE);

View File

@@ -40,7 +40,6 @@
#include "backends/meta-backend-private.h"
#include "backends/meta-logical-monitor.h"
#include "cogl/cogl-trace.h"
#include "core/boxes-private.h"
#include "core/meta-workspace-manager-private.h"
#include "core/workspace-private.h"
@@ -360,9 +359,6 @@ void
meta_workspace_add_window (MetaWorkspace *workspace,
MetaWindow *window)
{
COGL_TRACE_BEGIN_SCOPED (MetaWorkspaceAddWindow,
"Workspace (add window)");
g_assert (g_list_find (workspace->mru_list, window) == NULL);
workspace->mru_list = g_list_prepend (workspace->mru_list, window);
@@ -384,9 +380,6 @@ void
meta_workspace_remove_window (MetaWorkspace *workspace,
MetaWindow *window)
{
COGL_TRACE_BEGIN_SCOPED (MetaWorkspaceRemoveWindow,
"Workspace (remove window)");
workspace->windows = g_list_remove (workspace->windows, window);
workspace->mru_list = g_list_remove (workspace->mru_list, window);

View File

@@ -977,7 +977,6 @@ data_device_end_drag_grab (MetaWaylandDragGrab *drag_grab)
{
meta_wayland_pointer_end_grab (drag_grab->generic.pointer);
meta_wayland_keyboard_end_grab (drag_grab->keyboard_grab.keyboard);
meta_display_sync_wayland_input_focus (meta_get_display ());
}
g_slice_free (MetaWaylandDragGrab, drag_grab);
@@ -1316,8 +1315,11 @@ data_device_start_drag (struct wl_client *client,
surface, drag_source, icon_surface);
if (meta_wayland_seat_has_keyboard (seat))
meta_wayland_keyboard_start_grab (seat->keyboard,
&seat->data_device.current_grab->keyboard_grab);
{
meta_wayland_keyboard_set_focus (seat->keyboard, NULL);
meta_wayland_keyboard_start_grab (seat->keyboard,
&seat->data_device.current_grab->keyboard_grab);
}
}
static void

View File

@@ -30,7 +30,6 @@
#include "backends/meta-cursor-tracker-private.h"
#include "clutter/clutter.h"
#include "clutter/wayland/clutter-wayland-compositor.h"
#include "cogl/cogl-trace.h"
#include "cogl/cogl-wayland-server.h"
#include "compositor/meta-surface-actor-wayland.h"
#include "compositor/meta-surface-actor.h"
@@ -871,9 +870,6 @@ cleanup:
static void
meta_wayland_surface_commit (MetaWaylandSurface *surface)
{
COGL_TRACE_BEGIN_SCOPED (MetaWaylandSurfaceCommit,
"WaylandSurface (commit");
if (surface->pending->buffer &&
!meta_wayland_buffer_is_realized (surface->pending->buffer))
meta_wayland_buffer_realize (surface->pending->buffer);

View File

@@ -32,7 +32,6 @@
#include "backends/meta-cursor-tracker-private.h"
#include "backends/x11/meta-backend-x11.h"
#include "compositor/meta-compositor-x11.h"
#include "cogl/cogl-trace.h"
#include "core/bell.h"
#include "core/display-private.h"
#include "core/meta-workspace-manager-private.h"
@@ -1767,9 +1766,6 @@ meta_x11_display_handle_xevent (MetaX11Display *x11_display,
XIEvent *input_event;
MetaCursorTracker *cursor_tracker;
COGL_TRACE_BEGIN_SCOPED (MetaX11DisplayHandleXevent,
"X11Display (handle X11 event)");
#if 0
meta_spew_event_print (x11_display, event);
#endif