Compare commits
	
		
			3 Commits
		
	
	
		
			3.34.3
			...
			wip/kms-co
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 
						 | 
					9582f7b207 | ||
| 
						 | 
					5fa38f4cd5 | ||
| 
						 | 
					0ae31a45ab | 
@@ -28,10 +28,10 @@ build-mutter:
 | 
			
		||||
    - merge_requests
 | 
			
		||||
    - /^.*$/
 | 
			
		||||
 | 
			
		||||
build-without-native-backend-and-wayland:
 | 
			
		||||
build-without-native-backend:
 | 
			
		||||
  stage: build
 | 
			
		||||
  script:
 | 
			
		||||
    - meson . build -Dbuildtype=debugoptimized -Dnative_backend=false -Dudev=false -Dwayland=false -Dcore_tests=false --werror --prefix /usr
 | 
			
		||||
    - meson . build -Dbuildtype=debugoptimized -Dnative_backend=false -Dudev=false --werror --prefix /usr
 | 
			
		||||
    - ninja -C build
 | 
			
		||||
    - ninja -C build install
 | 
			
		||||
  artifacts:
 | 
			
		||||
 
 | 
			
		||||
@@ -1,5 +1,6 @@
 | 
			
		||||
#!/usr/bin/bash
 | 
			
		||||
 | 
			
		||||
mutter_branch=$(git describe --contains --all HEAD)
 | 
			
		||||
gnome_shell_target=
 | 
			
		||||
 | 
			
		||||
git clone https://gitlab.gnome.org/GNOME/gnome-shell.git
 | 
			
		||||
@@ -25,7 +26,8 @@ if [ "$CI_MERGE_REQUEST_TARGET_BRANCH_NAME" ]; then
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
if [ -z "$gnome_shell_target" ]; then
 | 
			
		||||
  gnome_shell_target=$(git branch -r -l origin/$CI_COMMIT_REF_NAME)
 | 
			
		||||
  gnome_shell_target=$(git branch -r -l origin/$mutter_branch)
 | 
			
		||||
  gnome_shell_target=${gnome_shell_target:-$(git branch -r -l ${mutter_branch#remotes/})}
 | 
			
		||||
  gnome_shell_target=${gnome_shell_target:-origin/master}
 | 
			
		||||
  echo Using $gnome_shell_target instead
 | 
			
		||||
fi
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										114
									
								
								NEWS
									
									
									
									
									
								
							
							
						
						
									
										114
									
								
								NEWS
									
									
									
									
									
								
							@@ -1,117 +1,3 @@
 | 
			
		||||
3.34.3
 | 
			
		||||
======
 | 
			
		||||
* Fix window recording on HiDPI [Pascal; !976]
 | 
			
		||||
* Fix top-left pixel being insensitive to clicks [Sebastian; #893]
 | 
			
		||||
 | 
			
		||||
Contributors:
 | 
			
		||||
  Sebastian Keller, Pascal Nowack
 | 
			
		||||
 | 
			
		||||
3.34.2
 | 
			
		||||
======
 | 
			
		||||
* Fix immediate screen blank after releasing inhibitor [Tim; #573]
 | 
			
		||||
* Respond to frame callbacks regardless of damage [Jonas Å.; !839]
 | 
			
		||||
* Translate well-known selection atoms to mimetypes [Carlos; !842]
 | 
			
		||||
* Fix Night Light on wayland [Jonas Å.; !840]
 | 
			
		||||
* Fix various copy+paste/DND regressions [Carlos; !848, #789, #842,
 | 
			
		||||
  #793, #845, #854]
 | 
			
		||||
* Don't emit focus event after desctruction [Marco; gnome-shell#1704, !860]
 | 
			
		||||
* Fix hang when opening not-responding dialog on Xorg [Carlos; !876]
 | 
			
		||||
* Fix frozen grabs on Xorg after weeks of inactivity [Jonas Å.; !886]
 | 
			
		||||
* Fix triggering popups from stylus devices on wayland [Carlos; #886]
 | 
			
		||||
* Support shadow framebuffers for offscreen rendering [Olivier; !917]
 | 
			
		||||
* Fix hang after interacting with desktop icons on X11 [Marco; !909]
 | 
			
		||||
* Don't double scale when getting absolute surface coordinates [Xiang; !915]
 | 
			
		||||
* Kill window effects on destroy [Robert; !924]
 | 
			
		||||
* Use partial damage for dma-buf and EGLImage buffers on wayland [Robert; #947]
 | 
			
		||||
* Do not stack transients underneath their always-on-top parent [Florian; #587]
 | 
			
		||||
* Fix KMS freeze after pageflip [Pekka; !953]
 | 
			
		||||
* Fixed crashes [Robert, Jonas Å., Marco, Hans, Carlos, Tim; !856, !912, !895,
 | 
			
		||||
  !928, #591, !823, !960]
 | 
			
		||||
* Plugged memory leaks [Niels, Robert, Carlos; !847, !868, !873]
 | 
			
		||||
* Misc. bug fixes and cleanups [Daniel, Marco, Jonas Å., Georges, Cosimo,
 | 
			
		||||
  Florian, Hans, Robert, Jonas D.; !841, !764, !837, !846, !673, !811, !893,
 | 
			
		||||
  !925, !927, !940, !832]
 | 
			
		||||
 | 
			
		||||
Contributors:
 | 
			
		||||
  Marco Trevisan (Treviño), Cosimo Cecchi, Tim Crawford, Jonas Dreßler,
 | 
			
		||||
  Xiang Fan, Olivier Fourdan, Carlos Garnacho, Hans de Goede, Niels De Graef,
 | 
			
		||||
  Tim Klocke, Robert Mader, Florian Müllner, Georges Basile Stavracas Neto,
 | 
			
		||||
  Pekka Paalanen, Daniel van Vugt, Jonas Ådahl
 | 
			
		||||
 | 
			
		||||
Translators:
 | 
			
		||||
  Bruce Cowan [en_GB]
 | 
			
		||||
3.34.1
 | 
			
		||||
======
 | 
			
		||||
* Fix startup of X11 session services on wayland [Carlos; #771]
 | 
			
		||||
* Fix _NET_ACTIVE_WINDOW emission [Carlos; #751]
 | 
			
		||||
* Fix initial view perspective [Marco; !803]
 | 
			
		||||
* Fix screenshots and window animations when scaled [Robert; !758]
 | 
			
		||||
* Re-enable coredumps when capabilities are set [Jonas; !811]
 | 
			
		||||
* Fix scaling of DND surface actors [Robert; !780]
 | 
			
		||||
* Optimize blitting of untransformed offscreen stage views [Olivier; !809, !820]
 | 
			
		||||
* Fix freeze of pointer event delivery on X11 [Olivier; !821]
 | 
			
		||||
* Fix scaling of stylus input coordinates with HiDPI [Dorian; !830]
 | 
			
		||||
* Fix memory leak when using implicit animations [Jonas; !828]
 | 
			
		||||
* Fix numlock state for native backend [Carlos; #769]
 | 
			
		||||
* Fixed crashes [Marco, Olivier, Jonas Å.; !805, #823, !808, !825,
 | 
			
		||||
  #844, !826, #779]
 | 
			
		||||
* Misc. bug fixes and cleanups [Jonas Å., Georges, Jonas D., Michal, Daniel,
 | 
			
		||||
  Iain, Adam, Marco, Carlos, Ting-Wei, Hans, Robert; !787, !795, !791, !797,
 | 
			
		||||
  !772, !775, !799, !778, !785, !782, !796, #819, !814, !769, !817, !783, !786,
 | 
			
		||||
  !829, !774, #822]
 | 
			
		||||
 | 
			
		||||
Contributors:
 | 
			
		||||
  Marco Trevisan (Treviño), Jonas Dreßler, Olivier Fourdan, Carlos Garnacho,
 | 
			
		||||
  Hans de Goede, Adam Jackson, Ting-Wei Lan, Iain Lane, Michal Lazo,
 | 
			
		||||
  Robert Mader, Georges Basile Stavracas Neto, Dorian Stoll, Daniel van Vugt,
 | 
			
		||||
  Jonas Ådahl
 | 
			
		||||
 | 
			
		||||
Translators:
 | 
			
		||||
  Milo Casagrande [it], Nathan Follens [nl], Matej Urbančič [sl],
 | 
			
		||||
  Ask Hjorth Larsen [da], Alan Mortensen [da], Jordi Mas [ca]
 | 
			
		||||
 | 
			
		||||
3.34.0
 | 
			
		||||
======
 | 
			
		||||
* Fix xdg-output v3 support [Olivier; !771]
 | 
			
		||||
* Fix crash when changing decoration state [Jonas; !773]
 | 
			
		||||
* Add and remove connectors on hot-plug [Jonas; !743]
 | 
			
		||||
 | 
			
		||||
Contributors:
 | 
			
		||||
  Olivier Fourdan, Jonas Ådahl
 | 
			
		||||
 | 
			
		||||
Translators:
 | 
			
		||||
  Rafael Fontenelle [pt_BR], Gwan-gyeong Mun [ko], Christian Kirbach [de],
 | 
			
		||||
  Claude Paroz [fr], Milo Casagrande [it], Emin Tufan Çetin [tr],
 | 
			
		||||
  Ryuta Fujii [ja]
 | 
			
		||||
 | 
			
		||||
3.33.92
 | 
			
		||||
=======
 | 
			
		||||
* Turn MetaShapedTexture into a ClutterContent implementation [Georges; !409]
 | 
			
		||||
* Restore inhibit shortcut for overlay key [Olivier; #734]
 | 
			
		||||
* Misc. pointer a11y improvements [Jonas D., Olivier; !746, !747, !745, !761]
 | 
			
		||||
* Fix position of drag surfaces [Robert; !684]
 | 
			
		||||
* Implement subsurface.place_below() for parents [Robert; !664]
 | 
			
		||||
* Add meta_window_actor_get_image() [Jonas Å.; !752]
 | 
			
		||||
* Revert faulty optimization from !719 [Jonas Å.; #735]
 | 
			
		||||
* Add additional sysprof trace points [Jonas Å.; !757, !765]
 | 
			
		||||
* Remove GLX "threaded swap wait" used on Nvidia [Daniel; !602]
 | 
			
		||||
* Implement geometric picking [Daniel; !189]
 | 
			
		||||
* Fix lost keyboard focus after DND [Olivier; #747]
 | 
			
		||||
* Misc. bug fixes and cleanups [Florian, Carlos, Piotr, Hans, Georges, Robert,
 | 
			
		||||
  Ray, Mart, Rémi; !740, !672, !749, !751, !753, !730, !755, !756, !750, !715,
 | 
			
		||||
  #738944, !657, !768]
 | 
			
		||||
 | 
			
		||||
Contributors:
 | 
			
		||||
  Jonas Ådahl, Rémi Bernon, Piotr Drąg, Jonas Dreßler, Olivier Fourdan,
 | 
			
		||||
  Carlos Garnacho, Hans de Goede, Robert Mader, Florian Müllner,
 | 
			
		||||
  Georges Basile Stavracas Neto, Mart Raudsepp, Ray Strode, Daniel van Vugt
 | 
			
		||||
 | 
			
		||||
Translators:
 | 
			
		||||
  Piotr Drąg [pl], Марко Костић [sr], Rūdolfs Mazurs [lv], Matej Urbančič [sl],
 | 
			
		||||
  Balázs Úr [hu], Fran Dieguez [gl], Jordi Mas [ca], Anders Jonsson [sv],
 | 
			
		||||
  Trần Ngọc Quân [vi], Tim Sabsch [de], Fabio Tomat [fur], Goran Vidović [hr],
 | 
			
		||||
  Marek Černocký [cs]
 | 
			
		||||
 | 
			
		||||
3.33.91
 | 
			
		||||
=======
 | 
			
		||||
* Fix primary selection copy and paste between X11 and wayland [Hans; #702]
 | 
			
		||||
 
 | 
			
		||||
@@ -75,8 +75,8 @@ struct _CallyRootPrivate
 | 
			
		||||
  GSList *stage_list;
 | 
			
		||||
 | 
			
		||||
  /* signals id */
 | 
			
		||||
  gulong stage_added_id;
 | 
			
		||||
  gulong stage_removed_id;
 | 
			
		||||
  guint stage_added_id;
 | 
			
		||||
  guint stage_removed_id;
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
G_DEFINE_TYPE_WITH_PRIVATE (CallyRoot, cally_root,  ATK_TYPE_GOBJECT_ACCESSIBLE)
 | 
			
		||||
@@ -149,9 +149,11 @@ cally_root_finalize (GObject *object)
 | 
			
		||||
 | 
			
		||||
  stage_manager = atk_gobject_accessible_get_object (ATK_GOBJECT_ACCESSIBLE (root));
 | 
			
		||||
 | 
			
		||||
  g_clear_signal_handler (&root->priv->stage_added_id, stage_manager);
 | 
			
		||||
  g_signal_handler_disconnect (stage_manager,
 | 
			
		||||
                               root->priv->stage_added_id);
 | 
			
		||||
 | 
			
		||||
  g_clear_signal_handler (&root->priv->stage_removed_id, stage_manager);
 | 
			
		||||
  g_signal_handler_disconnect (stage_manager,
 | 
			
		||||
                               root->priv->stage_added_id);
 | 
			
		||||
 | 
			
		||||
  G_OBJECT_CLASS (cally_root_parent_class)->finalize (object);
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -242,6 +242,9 @@ ClutterAnimationInfo *          _clutter_actor_get_animation_info
 | 
			
		||||
ClutterTransition *             _clutter_actor_create_transition                        (ClutterActor *self,
 | 
			
		||||
                                                                                         GParamSpec   *pspec,
 | 
			
		||||
                                                                                         ...);
 | 
			
		||||
ClutterTransition *             _clutter_actor_get_transition                           (ClutterActor *self,
 | 
			
		||||
                                                                                         GParamSpec   *pspec);
 | 
			
		||||
 | 
			
		||||
gboolean                        _clutter_actor_foreach_child                            (ClutterActor *self,
 | 
			
		||||
                                                                                         ClutterForeachCallback callback,
 | 
			
		||||
                                                                                         gpointer user_data);
 | 
			
		||||
@@ -274,9 +277,6 @@ void                            _clutter_actor_set_enable_paint_unmapped
 | 
			
		||||
void                            _clutter_actor_set_has_pointer                          (ClutterActor *self,
 | 
			
		||||
                                                                                         gboolean      has_pointer);
 | 
			
		||||
 | 
			
		||||
void                            _clutter_actor_set_has_key_focus                        (ClutterActor *self,
 | 
			
		||||
                                                                                         gboolean      has_key_focus);
 | 
			
		||||
 | 
			
		||||
void                            _clutter_actor_queue_redraw_with_clip                   (ClutterActor             *self,
 | 
			
		||||
                                                                                         ClutterRedrawFlags        flags,
 | 
			
		||||
                                                                                         const ClutterPaintVolume *clip_volume);
 | 
			
		||||
 
 | 
			
		||||
@@ -835,7 +835,6 @@ struct _ClutterActorPrivate
 | 
			
		||||
  guint enable_model_view_transform : 1;
 | 
			
		||||
  guint enable_paint_unmapped       : 1;
 | 
			
		||||
  guint has_pointer                 : 1;
 | 
			
		||||
  guint has_key_focus               : 1;
 | 
			
		||||
  guint propagated_one_redraw       : 1;
 | 
			
		||||
  guint paint_volume_valid          : 1;
 | 
			
		||||
  guint last_paint_volume_valid     : 1;
 | 
			
		||||
@@ -1032,6 +1031,7 @@ typedef struct _TransitionClosure
 | 
			
		||||
  ClutterTransition *transition;
 | 
			
		||||
  gchar *name;
 | 
			
		||||
  gulong completed_id;
 | 
			
		||||
  guint is_implicit : 1;
 | 
			
		||||
} TransitionClosure;
 | 
			
		||||
 | 
			
		||||
static void clutter_container_iface_init  (ClutterContainerIface  *iface);
 | 
			
		||||
@@ -1692,20 +1692,6 @@ clutter_actor_is_mapped (ClutterActor *self)
 | 
			
		||||
  return CLUTTER_ACTOR_IS_MAPPED (self);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static void
 | 
			
		||||
maybe_unset_key_focus (ClutterActor *self)
 | 
			
		||||
{
 | 
			
		||||
  ClutterActor *stage;
 | 
			
		||||
 | 
			
		||||
  if (!self->priv->has_key_focus)
 | 
			
		||||
    return;
 | 
			
		||||
 | 
			
		||||
  stage = _clutter_actor_get_stage_internal (self);
 | 
			
		||||
 | 
			
		||||
  if (stage)
 | 
			
		||||
    clutter_stage_set_key_focus (CLUTTER_STAGE (stage), NULL);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static void
 | 
			
		||||
clutter_actor_real_unmap (ClutterActor *self)
 | 
			
		||||
{
 | 
			
		||||
@@ -1739,7 +1725,17 @@ clutter_actor_real_unmap (ClutterActor *self)
 | 
			
		||||
 | 
			
		||||
  /* relinquish keyboard focus if we were unmapped while owning it */
 | 
			
		||||
  if (!CLUTTER_ACTOR_IS_TOPLEVEL (self))
 | 
			
		||||
    maybe_unset_key_focus (self);
 | 
			
		||||
    {
 | 
			
		||||
      ClutterStage *stage;
 | 
			
		||||
 | 
			
		||||
      stage = CLUTTER_STAGE (_clutter_actor_get_stage_internal (self));
 | 
			
		||||
 | 
			
		||||
      if (stage != NULL &&
 | 
			
		||||
          clutter_stage_get_key_focus (stage) == self)
 | 
			
		||||
        {
 | 
			
		||||
          clutter_stage_set_key_focus (stage, NULL);
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
@@ -4243,7 +4239,11 @@ _clutter_actor_stop_transitions (ClutterActor *self)
 | 
			
		||||
    {
 | 
			
		||||
      TransitionClosure *closure = value;
 | 
			
		||||
 | 
			
		||||
      if (clutter_transition_get_remove_on_complete (closure->transition))
 | 
			
		||||
      /* implicit transitions, and automatically managed explicit ones,
 | 
			
		||||
       * should be removed at this point
 | 
			
		||||
       */
 | 
			
		||||
      if (closure->is_implicit ||
 | 
			
		||||
          clutter_transition_get_remove_on_complete (closure->transition))
 | 
			
		||||
        {
 | 
			
		||||
          g_hash_table_iter_remove (&iter);
 | 
			
		||||
        }
 | 
			
		||||
@@ -4436,8 +4436,7 @@ clutter_actor_remove_child_internal (ClutterActor                 *self,
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
  /* clutter_actor_reparent() will emit ::parent-set for us */
 | 
			
		||||
  if (emit_parent_set && !CLUTTER_ACTOR_IN_REPARENT (child) &&
 | 
			
		||||
      !CLUTTER_ACTOR_IN_DESTRUCTION (child))
 | 
			
		||||
  if (emit_parent_set && !CLUTTER_ACTOR_IN_REPARENT (child))
 | 
			
		||||
    {
 | 
			
		||||
      child->priv->needs_compute_resource_scale = TRUE;
 | 
			
		||||
      g_signal_emit (child, actor_signals[PARENT_SET], 0, self);
 | 
			
		||||
@@ -6069,11 +6068,6 @@ clutter_actor_dispose (GObject *object)
 | 
			
		||||
                object->ref_count,
 | 
			
		||||
		g_type_name (G_OBJECT_TYPE (self)));
 | 
			
		||||
 | 
			
		||||
  maybe_unset_key_focus (self);
 | 
			
		||||
 | 
			
		||||
  /* Stop the emission of any property change */
 | 
			
		||||
  g_object_freeze_notify (object);
 | 
			
		||||
 | 
			
		||||
  g_signal_emit (self, actor_signals[DESTROY], 0);
 | 
			
		||||
 | 
			
		||||
  /* avoid recursing when called from clutter_actor_destroy() */
 | 
			
		||||
@@ -15986,9 +15980,6 @@ clutter_actor_grab_key_focus (ClutterActor *self)
 | 
			
		||||
 | 
			
		||||
  g_return_if_fail (CLUTTER_IS_ACTOR (self));
 | 
			
		||||
 | 
			
		||||
  if (self->priv->has_key_focus)
 | 
			
		||||
    return;
 | 
			
		||||
 | 
			
		||||
  stage = _clutter_actor_get_stage_internal (self);
 | 
			
		||||
  if (stage != NULL)
 | 
			
		||||
    clutter_stage_set_key_focus (CLUTTER_STAGE (stage), self);
 | 
			
		||||
@@ -16778,23 +16769,6 @@ _clutter_actor_set_has_pointer (ClutterActor *self,
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void
 | 
			
		||||
_clutter_actor_set_has_key_focus (ClutterActor *self,
 | 
			
		||||
                                  gboolean      has_key_focus)
 | 
			
		||||
{
 | 
			
		||||
  ClutterActorPrivate *priv = self->priv;
 | 
			
		||||
 | 
			
		||||
  if (priv->has_key_focus != has_key_focus)
 | 
			
		||||
    {
 | 
			
		||||
      priv->has_key_focus = has_key_focus;
 | 
			
		||||
 | 
			
		||||
      if (has_key_focus)
 | 
			
		||||
        g_signal_emit (self, actor_signals[KEY_FOCUS_IN], 0);
 | 
			
		||||
      else
 | 
			
		||||
        g_signal_emit (self, actor_signals[KEY_FOCUS_OUT], 0);
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * clutter_actor_get_text_direction:
 | 
			
		||||
 * @self: a #ClutterActor
 | 
			
		||||
@@ -17643,9 +17617,15 @@ clutter_actor_clear_effects (ClutterActor *self)
 | 
			
		||||
gboolean
 | 
			
		||||
clutter_actor_has_key_focus (ClutterActor *self)
 | 
			
		||||
{
 | 
			
		||||
  ClutterActor *stage;
 | 
			
		||||
 | 
			
		||||
  g_return_val_if_fail (CLUTTER_IS_ACTOR (self), FALSE);
 | 
			
		||||
 | 
			
		||||
  return self->priv->has_key_focus;
 | 
			
		||||
  stage = _clutter_actor_get_stage_internal (self);
 | 
			
		||||
  if (stage == NULL)
 | 
			
		||||
    return FALSE;
 | 
			
		||||
 | 
			
		||||
  return clutter_stage_get_key_focus (CLUTTER_STAGE (stage)) == self;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static gboolean
 | 
			
		||||
@@ -19430,9 +19410,9 @@ clutter_actor_iter_destroy (ClutterActorIter *iter)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static const ClutterAnimationInfo default_animation_info = {
 | 
			
		||||
  NULL,         /* transitions */
 | 
			
		||||
  NULL,         /* states */
 | 
			
		||||
  NULL,         /* cur_state */
 | 
			
		||||
  NULL,         /* transitions */
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
static void
 | 
			
		||||
@@ -19486,6 +19466,20 @@ _clutter_actor_get_animation_info (ClutterActor *self)
 | 
			
		||||
  return res;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
ClutterTransition *
 | 
			
		||||
_clutter_actor_get_transition (ClutterActor *actor,
 | 
			
		||||
                               GParamSpec   *pspec)
 | 
			
		||||
{
 | 
			
		||||
  const ClutterAnimationInfo *info;
 | 
			
		||||
 | 
			
		||||
  info = _clutter_actor_get_animation_info_or_defaults (actor);
 | 
			
		||||
 | 
			
		||||
  if (info->transitions == NULL)
 | 
			
		||||
    return NULL;
 | 
			
		||||
 | 
			
		||||
  return g_hash_table_lookup (info->transitions, pspec->name);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static void
 | 
			
		||||
transition_closure_free (gpointer data)
 | 
			
		||||
{
 | 
			
		||||
@@ -19504,8 +19498,6 @@ transition_closure_free (gpointer data)
 | 
			
		||||
 | 
			
		||||
      if (clutter_timeline_is_playing (timeline))
 | 
			
		||||
        clutter_timeline_stop (timeline);
 | 
			
		||||
      else if (clutter_timeline_get_delay (timeline) > 0)
 | 
			
		||||
        clutter_timeline_cancel_delay (timeline);
 | 
			
		||||
 | 
			
		||||
      /* remove the reference added in add_transition_internal() */
 | 
			
		||||
      g_object_unref (clos->transition);
 | 
			
		||||
@@ -19540,8 +19532,15 @@ on_transition_stopped (ClutterTransition *transition,
 | 
			
		||||
  t_quark = g_quark_from_string (clos->name);
 | 
			
		||||
  t_name = g_strdup (clos->name);
 | 
			
		||||
 | 
			
		||||
  if (clutter_transition_get_remove_on_complete (transition))
 | 
			
		||||
  if (clos->is_implicit ||
 | 
			
		||||
      clutter_transition_get_remove_on_complete (transition))
 | 
			
		||||
    {
 | 
			
		||||
      /* we take a reference here because removing the closure
 | 
			
		||||
       * will release the reference on the transition, and we
 | 
			
		||||
       * want the transition to survive the signal emission
 | 
			
		||||
       */
 | 
			
		||||
      g_object_ref (transition);
 | 
			
		||||
 | 
			
		||||
      /* this is safe, because the timeline has now stopped,
 | 
			
		||||
       * so we won't recurse; the reference on the Animatable
 | 
			
		||||
       * will be dropped by the ::stopped signal closure in
 | 
			
		||||
@@ -19577,7 +19576,8 @@ on_transition_stopped (ClutterTransition *transition,
 | 
			
		||||
static void
 | 
			
		||||
clutter_actor_add_transition_internal (ClutterActor *self,
 | 
			
		||||
                                       const gchar  *name,
 | 
			
		||||
                                       ClutterTransition *transition)
 | 
			
		||||
                                       ClutterTransition *transition,
 | 
			
		||||
                                       gboolean           is_implicit)
 | 
			
		||||
{
 | 
			
		||||
  ClutterTimeline *timeline;
 | 
			
		||||
  TransitionClosure *clos;
 | 
			
		||||
@@ -19607,6 +19607,7 @@ clutter_actor_add_transition_internal (ClutterActor *self,
 | 
			
		||||
  clos->actor = self;
 | 
			
		||||
  clos->transition = g_object_ref (transition);
 | 
			
		||||
  clos->name = g_strdup (name);
 | 
			
		||||
  clos->is_implicit = is_implicit;
 | 
			
		||||
  clos->completed_id = g_signal_connect (timeline, "stopped",
 | 
			
		||||
                                         G_CALLBACK (on_transition_stopped),
 | 
			
		||||
                                         clos);
 | 
			
		||||
@@ -19765,8 +19766,6 @@ _clutter_actor_create_transition (ClutterActor *actor,
 | 
			
		||||
    {
 | 
			
		||||
      res = clutter_property_transition_new (pspec->name);
 | 
			
		||||
 | 
			
		||||
      clutter_transition_set_remove_on_complete (res, TRUE);
 | 
			
		||||
 | 
			
		||||
      interval = clutter_interval_new_with_values (ptype, &initial, &final);
 | 
			
		||||
      clutter_transition_set_interval (res, interval);
 | 
			
		||||
 | 
			
		||||
@@ -19800,7 +19799,7 @@ _clutter_actor_create_transition (ClutterActor *actor,
 | 
			
		||||
#endif /* CLUTTER_ENABLE_DEBUG */
 | 
			
		||||
 | 
			
		||||
      /* this will start the transition as well */
 | 
			
		||||
      clutter_actor_add_transition_internal (actor, pspec->name, res);
 | 
			
		||||
      clutter_actor_add_transition_internal (actor, pspec->name, res, TRUE);
 | 
			
		||||
 | 
			
		||||
      /* the actor now owns the transition */
 | 
			
		||||
      g_object_unref (res);
 | 
			
		||||
@@ -19874,7 +19873,7 @@ clutter_actor_add_transition (ClutterActor      *self,
 | 
			
		||||
  g_return_if_fail (name != NULL);
 | 
			
		||||
  g_return_if_fail (CLUTTER_IS_TRANSITION (transition));
 | 
			
		||||
 | 
			
		||||
  clutter_actor_add_transition_internal (self, name, transition);
 | 
			
		||||
  clutter_actor_add_transition_internal (self, name, transition, FALSE);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 
 | 
			
		||||
@@ -592,13 +592,13 @@ clutter_point_compare_line (const ClutterPoint *p,
 | 
			
		||||
/**
 | 
			
		||||
 * clutter_point_inside_quadrilateral:
 | 
			
		||||
 * @point: a #ClutterPoint to test
 | 
			
		||||
 * @vertices: array of vertices of the quadrilateral, in either clockwise or
 | 
			
		||||
 *            anticlockwise order.
 | 
			
		||||
 * @vertices: array of vertices of the quadrilateral, in clockwise order,
 | 
			
		||||
 *            from top-left to bottom-left
 | 
			
		||||
 *
 | 
			
		||||
 * Determines whether a point is inside the convex quadrilateral provided,
 | 
			
		||||
 * or on any of its edges or vertices.
 | 
			
		||||
 * and not on any of its edges or vertices.
 | 
			
		||||
 *
 | 
			
		||||
 * Returns: %TRUE if @point is inside or touching the quadrilateral
 | 
			
		||||
 * Returns: %TRUE if @point is inside the quadrilateral
 | 
			
		||||
 */
 | 
			
		||||
gboolean
 | 
			
		||||
clutter_point_inside_quadrilateral (const ClutterPoint *point,
 | 
			
		||||
 
 | 
			
		||||
@@ -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
 | 
			
		||||
 
 | 
			
		||||
@@ -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)
 | 
			
		||||
 
 | 
			
		||||
@@ -1099,12 +1099,12 @@ clutter_paint_node_to_json (ClutterPaintNode *node)
 | 
			
		||||
 | 
			
		||||
            case PAINT_OP_PATH:
 | 
			
		||||
              json_builder_set_member_name (builder, "path");
 | 
			
		||||
              json_builder_add_int_value (builder, (intptr_t) op->op.path);
 | 
			
		||||
              json_builder_add_int_value (builder, (gint64) op->op.path);
 | 
			
		||||
              break;
 | 
			
		||||
 | 
			
		||||
            case PAINT_OP_PRIMITIVE:
 | 
			
		||||
              json_builder_set_member_name (builder, "primitive");
 | 
			
		||||
              json_builder_add_int_value (builder, (intptr_t) op->op.primitive);
 | 
			
		||||
              json_builder_add_int_value (builder, (gint64) op->op.primitive);
 | 
			
		||||
              break;
 | 
			
		||||
 | 
			
		||||
            case PAINT_OP_INVALID:
 | 
			
		||||
 
 | 
			
		||||
@@ -315,8 +315,6 @@ gboolean        _clutter_run_progress_function  (GType gtype,
 | 
			
		||||
                                                 gdouble progress,
 | 
			
		||||
                                                 GValue *retval);
 | 
			
		||||
 | 
			
		||||
void            clutter_timeline_cancel_delay (ClutterTimeline *timeline);
 | 
			
		||||
 | 
			
		||||
G_END_DECLS
 | 
			
		||||
 | 
			
		||||
#endif /* __CLUTTER_PRIVATE_H__ */
 | 
			
		||||
 
 | 
			
		||||
@@ -500,7 +500,6 @@ static void
 | 
			
		||||
clutter_shader_effect_init (ClutterShaderEffect *effect)
 | 
			
		||||
{
 | 
			
		||||
  effect->priv = clutter_shader_effect_get_instance_private (effect);
 | 
			
		||||
  effect->priv->shader_type = CLUTTER_FRAGMENT_SHADER;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 
 | 
			
		||||
@@ -30,7 +30,6 @@ enum
 | 
			
		||||
  PROP_LAYOUT,
 | 
			
		||||
  PROP_FRAMEBUFFER,
 | 
			
		||||
  PROP_OFFSCREEN,
 | 
			
		||||
  PROP_SHADOWFB,
 | 
			
		||||
  PROP_SCALE,
 | 
			
		||||
 | 
			
		||||
  PROP_LAST
 | 
			
		||||
@@ -45,10 +44,7 @@ typedef struct _ClutterStageViewPrivate
 | 
			
		||||
  CoglFramebuffer *framebuffer;
 | 
			
		||||
 | 
			
		||||
  CoglOffscreen *offscreen;
 | 
			
		||||
  CoglPipeline *offscreen_pipeline;
 | 
			
		||||
 | 
			
		||||
  CoglOffscreen *shadowfb;
 | 
			
		||||
  CoglPipeline *shadowfb_pipeline;
 | 
			
		||||
  CoglPipeline *pipeline;
 | 
			
		||||
 | 
			
		||||
  guint dirty_viewport   : 1;
 | 
			
		||||
  guint dirty_projection : 1;
 | 
			
		||||
@@ -82,8 +78,6 @@ clutter_stage_view_get_framebuffer (ClutterStageView *view)
 | 
			
		||||
 | 
			
		||||
  if (priv->offscreen)
 | 
			
		||||
    return priv->offscreen;
 | 
			
		||||
  else if (priv->shadowfb)
 | 
			
		||||
    return priv->shadowfb;
 | 
			
		||||
  else
 | 
			
		||||
    return priv->framebuffer;
 | 
			
		||||
}
 | 
			
		||||
@@ -105,24 +99,6 @@ clutter_stage_view_get_onscreen (ClutterStageView *view)
 | 
			
		||||
  return priv->framebuffer;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static CoglPipeline *
 | 
			
		||||
clutter_stage_view_create_framebuffer_pipeline (CoglFramebuffer *framebuffer)
 | 
			
		||||
{
 | 
			
		||||
  CoglPipeline *pipeline;
 | 
			
		||||
 | 
			
		||||
  pipeline = cogl_pipeline_new (cogl_framebuffer_get_context (framebuffer));
 | 
			
		||||
 | 
			
		||||
  cogl_pipeline_set_layer_filters (pipeline, 0,
 | 
			
		||||
                                   COGL_PIPELINE_FILTER_NEAREST,
 | 
			
		||||
                                   COGL_PIPELINE_FILTER_NEAREST);
 | 
			
		||||
  cogl_pipeline_set_layer_texture (pipeline, 0,
 | 
			
		||||
                                   cogl_offscreen_get_texture (framebuffer));
 | 
			
		||||
  cogl_pipeline_set_layer_wrap_mode (pipeline, 0,
 | 
			
		||||
                                     COGL_PIPELINE_WRAP_MODE_CLAMP_TO_EDGE);
 | 
			
		||||
 | 
			
		||||
  return pipeline;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static void
 | 
			
		||||
clutter_stage_view_ensure_offscreen_blit_pipeline (ClutterStageView *view)
 | 
			
		||||
{
 | 
			
		||||
@@ -133,27 +109,21 @@ clutter_stage_view_ensure_offscreen_blit_pipeline (ClutterStageView *view)
 | 
			
		||||
 | 
			
		||||
  g_assert (priv->offscreen != NULL);
 | 
			
		||||
 | 
			
		||||
  if (priv->offscreen_pipeline)
 | 
			
		||||
  if (priv->pipeline)
 | 
			
		||||
    return;
 | 
			
		||||
 | 
			
		||||
  priv->offscreen_pipeline =
 | 
			
		||||
    clutter_stage_view_create_framebuffer_pipeline (priv->offscreen);
 | 
			
		||||
  priv->pipeline =
 | 
			
		||||
    cogl_pipeline_new (cogl_framebuffer_get_context (priv->offscreen));
 | 
			
		||||
  cogl_pipeline_set_layer_filters (priv->pipeline, 0,
 | 
			
		||||
                                   COGL_PIPELINE_FILTER_NEAREST,
 | 
			
		||||
                                   COGL_PIPELINE_FILTER_NEAREST);
 | 
			
		||||
  cogl_pipeline_set_layer_texture (priv->pipeline, 0,
 | 
			
		||||
                                   cogl_offscreen_get_texture (priv->offscreen));
 | 
			
		||||
  cogl_pipeline_set_layer_wrap_mode (priv->pipeline, 0,
 | 
			
		||||
                                     COGL_PIPELINE_WRAP_MODE_CLAMP_TO_EDGE);
 | 
			
		||||
 | 
			
		||||
  if (view_class->setup_offscreen_blit_pipeline)
 | 
			
		||||
    view_class->setup_offscreen_blit_pipeline (view, priv->offscreen_pipeline);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static void
 | 
			
		||||
clutter_stage_view_ensure_shadowfb_blit_pipeline (ClutterStageView *view)
 | 
			
		||||
{
 | 
			
		||||
  ClutterStageViewPrivate *priv =
 | 
			
		||||
    clutter_stage_view_get_instance_private (view);
 | 
			
		||||
 | 
			
		||||
  if (priv->shadowfb_pipeline)
 | 
			
		||||
    return;
 | 
			
		||||
 | 
			
		||||
  priv->shadowfb_pipeline =
 | 
			
		||||
    clutter_stage_view_create_framebuffer_pipeline (priv->shadowfb);
 | 
			
		||||
    view_class->setup_offscreen_blit_pipeline (view, priv->pipeline);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void
 | 
			
		||||
@@ -162,45 +132,7 @@ clutter_stage_view_invalidate_offscreen_blit_pipeline (ClutterStageView *view)
 | 
			
		||||
  ClutterStageViewPrivate *priv =
 | 
			
		||||
    clutter_stage_view_get_instance_private (view);
 | 
			
		||||
 | 
			
		||||
  g_clear_pointer (&priv->offscreen_pipeline, cogl_object_unref);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static void
 | 
			
		||||
clutter_stage_view_copy_to_framebuffer (ClutterStageView            *view,
 | 
			
		||||
                                        const cairo_rectangle_int_t *rect,
 | 
			
		||||
                                        CoglPipeline                *pipeline,
 | 
			
		||||
                                        CoglFramebuffer             *src_framebuffer,
 | 
			
		||||
                                        CoglFramebuffer             *dst_framebuffer,
 | 
			
		||||
                                        gboolean                     can_blit)
 | 
			
		||||
{
 | 
			
		||||
  CoglMatrix matrix;
 | 
			
		||||
 | 
			
		||||
  /* First, try with blit */
 | 
			
		||||
  if (can_blit)
 | 
			
		||||
    {
 | 
			
		||||
      if (cogl_blit_framebuffer (src_framebuffer,
 | 
			
		||||
                                 dst_framebuffer,
 | 
			
		||||
                                 0, 0,
 | 
			
		||||
                                 0, 0,
 | 
			
		||||
                                 cogl_framebuffer_get_width (dst_framebuffer),
 | 
			
		||||
                                 cogl_framebuffer_get_height (dst_framebuffer),
 | 
			
		||||
                                 NULL))
 | 
			
		||||
        return;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
  /* If blit fails, fallback to the slower painting method */
 | 
			
		||||
  cogl_framebuffer_push_matrix (dst_framebuffer);
 | 
			
		||||
 | 
			
		||||
  cogl_matrix_init_identity (&matrix);
 | 
			
		||||
  cogl_matrix_translate (&matrix, -1, 1, 0);
 | 
			
		||||
  cogl_matrix_scale (&matrix, 2, -2, 0);
 | 
			
		||||
  cogl_framebuffer_set_projection_matrix (dst_framebuffer, &matrix);
 | 
			
		||||
 | 
			
		||||
  cogl_framebuffer_draw_rectangle (dst_framebuffer,
 | 
			
		||||
                                   pipeline,
 | 
			
		||||
                                   0, 0, 1, 1);
 | 
			
		||||
 | 
			
		||||
  cogl_framebuffer_pop_matrix (dst_framebuffer);
 | 
			
		||||
  g_clear_pointer (&priv->pipeline, cogl_object_unref);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void
 | 
			
		||||
@@ -209,46 +141,24 @@ clutter_stage_view_blit_offscreen (ClutterStageView            *view,
 | 
			
		||||
{
 | 
			
		||||
  ClutterStageViewPrivate *priv =
 | 
			
		||||
    clutter_stage_view_get_instance_private (view);
 | 
			
		||||
  CoglMatrix matrix;
 | 
			
		||||
 | 
			
		||||
  if (priv->offscreen)
 | 
			
		||||
    {
 | 
			
		||||
      gboolean can_blit;
 | 
			
		||||
      CoglMatrix matrix;
 | 
			
		||||
  clutter_stage_view_ensure_offscreen_blit_pipeline (view);
 | 
			
		||||
  cogl_framebuffer_push_matrix (priv->framebuffer);
 | 
			
		||||
 | 
			
		||||
      clutter_stage_view_ensure_offscreen_blit_pipeline (view);
 | 
			
		||||
      clutter_stage_view_get_offscreen_transformation_matrix (view, &matrix);
 | 
			
		||||
      can_blit = cogl_matrix_is_identity (&matrix);
 | 
			
		||||
  /* Set transform so 0,0 is on the top left corner and 1,1 on
 | 
			
		||||
   * the bottom right corner.
 | 
			
		||||
   */
 | 
			
		||||
  cogl_matrix_init_identity (&matrix);
 | 
			
		||||
  cogl_matrix_translate (&matrix, -1, 1, 0);
 | 
			
		||||
  cogl_matrix_scale (&matrix, 2, -2, 0);
 | 
			
		||||
  cogl_framebuffer_set_projection_matrix (priv->framebuffer, &matrix);
 | 
			
		||||
 | 
			
		||||
      if (priv->shadowfb)
 | 
			
		||||
        {
 | 
			
		||||
          clutter_stage_view_copy_to_framebuffer (view,
 | 
			
		||||
                                                  rect,
 | 
			
		||||
                                                  priv->offscreen_pipeline,
 | 
			
		||||
                                                  priv->offscreen,
 | 
			
		||||
                                                  priv->shadowfb,
 | 
			
		||||
                                                  can_blit);
 | 
			
		||||
        }
 | 
			
		||||
      else
 | 
			
		||||
        {
 | 
			
		||||
          clutter_stage_view_copy_to_framebuffer (view,
 | 
			
		||||
                                                  rect,
 | 
			
		||||
                                                  priv->offscreen_pipeline,
 | 
			
		||||
                                                  priv->offscreen,
 | 
			
		||||
                                                  priv->framebuffer,
 | 
			
		||||
                                                  can_blit);
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
  cogl_framebuffer_draw_rectangle (priv->framebuffer,
 | 
			
		||||
                                   priv->pipeline,
 | 
			
		||||
                                   0, 0, 1, 1);
 | 
			
		||||
 | 
			
		||||
  if (priv->shadowfb)
 | 
			
		||||
    {
 | 
			
		||||
      clutter_stage_view_ensure_shadowfb_blit_pipeline (view);
 | 
			
		||||
      clutter_stage_view_copy_to_framebuffer (view,
 | 
			
		||||
                                              rect,
 | 
			
		||||
                                              priv->shadowfb_pipeline,
 | 
			
		||||
                                              priv->shadowfb,
 | 
			
		||||
                                              priv->framebuffer,
 | 
			
		||||
                                              TRUE);
 | 
			
		||||
    }
 | 
			
		||||
  cogl_framebuffer_pop_matrix (priv->framebuffer);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
float
 | 
			
		||||
@@ -348,9 +258,6 @@ clutter_stage_view_get_property (GObject    *object,
 | 
			
		||||
    case PROP_OFFSCREEN:
 | 
			
		||||
      g_value_set_boxed (value, priv->offscreen);
 | 
			
		||||
      break;
 | 
			
		||||
    case PROP_SHADOWFB:
 | 
			
		||||
      g_value_set_boxed (value, priv->shadowfb);
 | 
			
		||||
      break;
 | 
			
		||||
    case PROP_SCALE:
 | 
			
		||||
      g_value_set_float (value, priv->scale);
 | 
			
		||||
      break;
 | 
			
		||||
@@ -396,9 +303,6 @@ clutter_stage_view_set_property (GObject      *object,
 | 
			
		||||
    case PROP_OFFSCREEN:
 | 
			
		||||
      priv->offscreen = g_value_dup_boxed (value);
 | 
			
		||||
      break;
 | 
			
		||||
    case PROP_SHADOWFB:
 | 
			
		||||
      priv->shadowfb = g_value_dup_boxed (value);
 | 
			
		||||
      break;
 | 
			
		||||
    case PROP_SCALE:
 | 
			
		||||
      priv->scale = g_value_get_float (value);
 | 
			
		||||
      break;
 | 
			
		||||
@@ -415,10 +319,8 @@ clutter_stage_view_dispose (GObject *object)
 | 
			
		||||
    clutter_stage_view_get_instance_private (view);
 | 
			
		||||
 | 
			
		||||
  g_clear_pointer (&priv->framebuffer, cogl_object_unref);
 | 
			
		||||
  g_clear_pointer (&priv->shadowfb, cogl_object_unref);
 | 
			
		||||
  g_clear_pointer (&priv->offscreen, cogl_object_unref);
 | 
			
		||||
  g_clear_pointer (&priv->offscreen_pipeline, cogl_object_unref);
 | 
			
		||||
  g_clear_pointer (&priv->shadowfb_pipeline, cogl_object_unref);
 | 
			
		||||
  g_clear_pointer (&priv->pipeline, cogl_object_unref);
 | 
			
		||||
 | 
			
		||||
  G_OBJECT_CLASS (clutter_stage_view_parent_class)->dispose (object);
 | 
			
		||||
}
 | 
			
		||||
@@ -473,15 +375,6 @@ clutter_stage_view_class_init (ClutterStageViewClass *klass)
 | 
			
		||||
                        G_PARAM_CONSTRUCT_ONLY |
 | 
			
		||||
                        G_PARAM_STATIC_STRINGS);
 | 
			
		||||
 | 
			
		||||
  obj_props[PROP_SHADOWFB] =
 | 
			
		||||
    g_param_spec_boxed ("shadowfb",
 | 
			
		||||
                        "Shadow framebuffer",
 | 
			
		||||
                        "Framebuffer used as intermediate shadow buffer",
 | 
			
		||||
                        COGL_TYPE_HANDLE,
 | 
			
		||||
                        G_PARAM_READWRITE |
 | 
			
		||||
                        G_PARAM_CONSTRUCT_ONLY |
 | 
			
		||||
                        G_PARAM_STATIC_STRINGS);
 | 
			
		||||
 | 
			
		||||
  obj_props[PROP_SCALE] =
 | 
			
		||||
    g_param_spec_float ("scale",
 | 
			
		||||
                        "View scale",
 | 
			
		||||
 
 | 
			
		||||
@@ -226,7 +226,6 @@ static void capture_view_into (ClutterStage          *stage,
 | 
			
		||||
                               cairo_rectangle_int_t *rect,
 | 
			
		||||
                               uint8_t               *data,
 | 
			
		||||
                               int                    stride);
 | 
			
		||||
static void clutter_stage_update_view_perspective (ClutterStage *stage);
 | 
			
		||||
 | 
			
		||||
static void clutter_container_iface_init (ClutterContainerIface *iface);
 | 
			
		||||
 | 
			
		||||
@@ -486,9 +485,9 @@ is_inside_axis_aligned_rectangle (const ClutterPoint *point,
 | 
			
		||||
                                  const ClutterPoint *vertices)
 | 
			
		||||
{
 | 
			
		||||
  float min_x = FLT_MAX;
 | 
			
		||||
  float max_x = -FLT_MAX;
 | 
			
		||||
  float max_x = FLT_MIN;
 | 
			
		||||
  float min_y = FLT_MAX;
 | 
			
		||||
  float max_y = -FLT_MAX;
 | 
			
		||||
  float max_y = FLT_MIN;
 | 
			
		||||
  int i;
 | 
			
		||||
 | 
			
		||||
  for (i = 0; i < 3; i++)
 | 
			
		||||
@@ -1066,7 +1065,10 @@ clutter_stage_emit_key_focus_event (ClutterStage *stage,
 | 
			
		||||
  if (priv->key_focused_actor == NULL)
 | 
			
		||||
    return;
 | 
			
		||||
 | 
			
		||||
  _clutter_actor_set_has_key_focus (CLUTTER_ACTOR (stage), focus_in);
 | 
			
		||||
  if (focus_in)
 | 
			
		||||
    g_signal_emit_by_name (priv->key_focused_actor, "key-focus-in");
 | 
			
		||||
  else
 | 
			
		||||
    g_signal_emit_by_name (priv->key_focused_actor, "key-focus-out");
 | 
			
		||||
 | 
			
		||||
  g_object_notify_by_pspec (G_OBJECT (stage), obj_props[PROP_KEY_FOCUS]);
 | 
			
		||||
}
 | 
			
		||||
@@ -2352,6 +2354,29 @@ clutter_stage_init (ClutterStage *self)
 | 
			
		||||
  clutter_actor_set_background_color (CLUTTER_ACTOR (self),
 | 
			
		||||
                                      &default_stage_color);
 | 
			
		||||
 | 
			
		||||
  priv->perspective.fovy   = 60.0; /* 60 Degrees */
 | 
			
		||||
  priv->perspective.aspect = (float) geom.width / (float) geom.height;
 | 
			
		||||
  priv->perspective.z_near = 0.1;
 | 
			
		||||
  priv->perspective.z_far  = 100.0;
 | 
			
		||||
 | 
			
		||||
  cogl_matrix_init_identity (&priv->projection);
 | 
			
		||||
  cogl_matrix_perspective (&priv->projection,
 | 
			
		||||
                           priv->perspective.fovy,
 | 
			
		||||
                           priv->perspective.aspect,
 | 
			
		||||
                           priv->perspective.z_near,
 | 
			
		||||
                           priv->perspective.z_far);
 | 
			
		||||
  cogl_matrix_get_inverse (&priv->projection,
 | 
			
		||||
                           &priv->inverse_projection);
 | 
			
		||||
  cogl_matrix_init_identity (&priv->view);
 | 
			
		||||
  cogl_matrix_view_2d_in_perspective (&priv->view,
 | 
			
		||||
                                      priv->perspective.fovy,
 | 
			
		||||
                                      priv->perspective.aspect,
 | 
			
		||||
                                      priv->perspective.z_near,
 | 
			
		||||
                                      50, /* distance to 2d plane */
 | 
			
		||||
                                      geom.width,
 | 
			
		||||
                                      geom.height);
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /* FIXME - remove for 2.0 */
 | 
			
		||||
  priv->fog.z_near = 1.0;
 | 
			
		||||
  priv->fog.z_far  = 2.0;
 | 
			
		||||
@@ -2519,7 +2544,6 @@ clutter_stage_set_perspective (ClutterStage       *stage,
 | 
			
		||||
  priv->has_custom_perspective = TRUE;
 | 
			
		||||
 | 
			
		||||
  clutter_stage_set_perspective_internal (stage, perspective);
 | 
			
		||||
  clutter_stage_update_view_perspective (stage);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
@@ -2646,7 +2670,6 @@ _clutter_stage_set_viewport (ClutterStage *stage,
 | 
			
		||||
  priv->viewport[2] = width;
 | 
			
		||||
  priv->viewport[3] = height;
 | 
			
		||||
 | 
			
		||||
  clutter_stage_update_view_perspective (stage);
 | 
			
		||||
  _clutter_stage_dirty_viewport (stage);
 | 
			
		||||
 | 
			
		||||
  queue_full_redraw (stage);
 | 
			
		||||
@@ -3008,6 +3031,14 @@ clutter_stage_get_title (ClutterStage       *stage)
 | 
			
		||||
  return stage->priv->title;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static void
 | 
			
		||||
on_key_focus_destroy (ClutterActor *actor,
 | 
			
		||||
                      ClutterStage *stage)
 | 
			
		||||
{
 | 
			
		||||
  /* unset the key focus */
 | 
			
		||||
  clutter_stage_set_key_focus (stage, NULL);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * clutter_stage_set_key_focus:
 | 
			
		||||
 * @stage: the #ClutterStage
 | 
			
		||||
@@ -3047,14 +3078,18 @@ clutter_stage_set_key_focus (ClutterStage *stage,
 | 
			
		||||
      old_focused_actor = priv->key_focused_actor;
 | 
			
		||||
 | 
			
		||||
      /* set key_focused_actor to NULL before emitting the signal or someone
 | 
			
		||||
       * might hide the previously focused actor in the signal handler
 | 
			
		||||
       * might hide the previously focused actor in the signal handler and we'd
 | 
			
		||||
       * get re-entrant call and get glib critical from g_object_weak_unref
 | 
			
		||||
       */
 | 
			
		||||
      g_signal_handlers_disconnect_by_func (priv->key_focused_actor,
 | 
			
		||||
                                            G_CALLBACK (on_key_focus_destroy),
 | 
			
		||||
                                            stage);
 | 
			
		||||
      priv->key_focused_actor = NULL;
 | 
			
		||||
 | 
			
		||||
      _clutter_actor_set_has_key_focus (old_focused_actor, FALSE);
 | 
			
		||||
      g_signal_emit_by_name (old_focused_actor, "key-focus-out");
 | 
			
		||||
    }
 | 
			
		||||
  else
 | 
			
		||||
    _clutter_actor_set_has_key_focus (CLUTTER_ACTOR (stage), FALSE);
 | 
			
		||||
    g_signal_emit_by_name (stage, "key-focus-out");
 | 
			
		||||
 | 
			
		||||
  /* Note, if someone changes key focus in focus-out signal handler we'd be
 | 
			
		||||
   * overriding the latter call below moving the focus where it was originally
 | 
			
		||||
@@ -3064,10 +3099,14 @@ clutter_stage_set_key_focus (ClutterStage *stage,
 | 
			
		||||
  if (actor != NULL)
 | 
			
		||||
    {
 | 
			
		||||
      priv->key_focused_actor = actor;
 | 
			
		||||
      _clutter_actor_set_has_key_focus (actor, TRUE);
 | 
			
		||||
 | 
			
		||||
      g_signal_connect (actor,
 | 
			
		||||
                        "destroy", G_CALLBACK (on_key_focus_destroy),
 | 
			
		||||
                        stage);
 | 
			
		||||
      g_signal_emit_by_name (priv->key_focused_actor, "key-focus-in");
 | 
			
		||||
    }
 | 
			
		||||
  else
 | 
			
		||||
    _clutter_actor_set_has_key_focus (CLUTTER_ACTOR (stage), TRUE);
 | 
			
		||||
    g_signal_emit_by_name (stage, "key-focus-in");
 | 
			
		||||
 | 
			
		||||
  g_object_notify_by_pspec (G_OBJECT (stage), obj_props[PROP_KEY_FOCUS]);
 | 
			
		||||
}
 | 
			
		||||
@@ -3467,50 +3506,6 @@ calculate_z_translation (float z_near)
 | 
			
		||||
       + z_near;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static void
 | 
			
		||||
clutter_stage_update_view_perspective (ClutterStage *stage)
 | 
			
		||||
{
 | 
			
		||||
  ClutterStagePrivate *priv = stage->priv;
 | 
			
		||||
  ClutterPerspective perspective;
 | 
			
		||||
  float z_2d;
 | 
			
		||||
 | 
			
		||||
  perspective = priv->perspective;
 | 
			
		||||
 | 
			
		||||
  /* Ideally we want to regenerate the perspective matrix whenever
 | 
			
		||||
   * the size changes but if the user has provided a custom matrix
 | 
			
		||||
   * then we don't want to override it */
 | 
			
		||||
  if (!priv->has_custom_perspective)
 | 
			
		||||
    {
 | 
			
		||||
      perspective.fovy = 60.0; /* 60 Degrees */
 | 
			
		||||
      perspective.z_near = 0.1;
 | 
			
		||||
      perspective.aspect = priv->viewport[2] / priv->viewport[3];
 | 
			
		||||
      z_2d = calculate_z_translation (perspective.z_near);
 | 
			
		||||
 | 
			
		||||
      /* NB: z_2d is only enough room for 85% of the stage_height between
 | 
			
		||||
       * the stage and the z_near plane. For behind the stage plane we
 | 
			
		||||
       * want a more consistent gap of 10 times the stage_height before
 | 
			
		||||
       * hitting the far plane so we calculate that relative to the final
 | 
			
		||||
       * height of the stage plane at the z_2d_distance we got... */
 | 
			
		||||
      perspective.z_far = z_2d +
 | 
			
		||||
        tanf (_DEG_TO_RAD (perspective.fovy / 2.0f)) * z_2d * 20.0f;
 | 
			
		||||
 | 
			
		||||
      clutter_stage_set_perspective_internal (stage, &perspective);
 | 
			
		||||
    }
 | 
			
		||||
  else
 | 
			
		||||
    {
 | 
			
		||||
      z_2d = calculate_z_translation (perspective.z_near);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
  cogl_matrix_init_identity (&priv->view);
 | 
			
		||||
  cogl_matrix_view_2d_in_perspective (&priv->view,
 | 
			
		||||
                                      perspective.fovy,
 | 
			
		||||
                                      perspective.aspect,
 | 
			
		||||
                                      perspective.z_near,
 | 
			
		||||
                                      z_2d,
 | 
			
		||||
                                      priv->viewport[2],
 | 
			
		||||
                                      priv->viewport[3]);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void
 | 
			
		||||
_clutter_stage_maybe_setup_viewport (ClutterStage     *stage,
 | 
			
		||||
                                     ClutterStageView *view)
 | 
			
		||||
@@ -3521,6 +3516,7 @@ _clutter_stage_maybe_setup_viewport (ClutterStage     *stage,
 | 
			
		||||
  if (clutter_stage_view_is_dirty_viewport (view))
 | 
			
		||||
    {
 | 
			
		||||
      cairo_rectangle_int_t view_layout;
 | 
			
		||||
      ClutterPerspective perspective;
 | 
			
		||||
      float fb_scale;
 | 
			
		||||
      float viewport_offset_x;
 | 
			
		||||
      float viewport_offset_y;
 | 
			
		||||
@@ -3528,6 +3524,7 @@ _clutter_stage_maybe_setup_viewport (ClutterStage     *stage,
 | 
			
		||||
      float viewport_y;
 | 
			
		||||
      float viewport_width;
 | 
			
		||||
      float viewport_height;
 | 
			
		||||
      float z_2d;
 | 
			
		||||
 | 
			
		||||
      CLUTTER_NOTE (PAINT,
 | 
			
		||||
                    "Setting up the viewport { w:%f, h:%f }",
 | 
			
		||||
@@ -3547,6 +3544,38 @@ _clutter_stage_maybe_setup_viewport (ClutterStage     *stage,
 | 
			
		||||
                                     viewport_x, viewport_y,
 | 
			
		||||
                                     viewport_width, viewport_height);
 | 
			
		||||
 | 
			
		||||
      perspective = priv->perspective;
 | 
			
		||||
 | 
			
		||||
      /* Ideally we want to regenerate the perspective matrix whenever
 | 
			
		||||
       * the size changes but if the user has provided a custom matrix
 | 
			
		||||
       * then we don't want to override it */
 | 
			
		||||
      if (!priv->has_custom_perspective)
 | 
			
		||||
        {
 | 
			
		||||
          perspective.aspect = priv->viewport[2] / priv->viewport[3];
 | 
			
		||||
          z_2d = calculate_z_translation (perspective.z_near);
 | 
			
		||||
 | 
			
		||||
          /* NB: z_2d is only enough room for 85% of the stage_height between
 | 
			
		||||
           * the stage and the z_near plane. For behind the stage plane we
 | 
			
		||||
           * want a more consistent gap of 10 times the stage_height before
 | 
			
		||||
           * hitting the far plane so we calculate that relative to the final
 | 
			
		||||
           * height of the stage plane at the z_2d_distance we got... */
 | 
			
		||||
          perspective.z_far = z_2d +
 | 
			
		||||
            tanf (_DEG_TO_RAD (perspective.fovy / 2.0f)) * z_2d * 20.0f;
 | 
			
		||||
 | 
			
		||||
          clutter_stage_set_perspective_internal (stage, &perspective);
 | 
			
		||||
        }
 | 
			
		||||
      else
 | 
			
		||||
        z_2d = calculate_z_translation (perspective.z_near);
 | 
			
		||||
 | 
			
		||||
      cogl_matrix_init_identity (&priv->view);
 | 
			
		||||
      cogl_matrix_view_2d_in_perspective (&priv->view,
 | 
			
		||||
                                          perspective.fovy,
 | 
			
		||||
                                          perspective.aspect,
 | 
			
		||||
                                          perspective.z_near,
 | 
			
		||||
                                          z_2d,
 | 
			
		||||
                                          priv->viewport[2],
 | 
			
		||||
                                          priv->viewport[3]);
 | 
			
		||||
 | 
			
		||||
      clutter_stage_view_set_dirty_viewport (view, FALSE);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -424,11 +424,6 @@ clutter_timeline_set_custom_property (ClutterScriptable *scriptable,
 | 
			
		||||
    g_object_set_property (G_OBJECT (scriptable), name, value);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void
 | 
			
		||||
clutter_timeline_cancel_delay (ClutterTimeline *timeline)
 | 
			
		||||
{
 | 
			
		||||
  g_clear_handle_id (&timeline->priv->delay_id, g_source_remove);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static void
 | 
			
		||||
clutter_scriptable_iface_init (ClutterScriptableIface *iface)
 | 
			
		||||
@@ -555,7 +550,11 @@ clutter_timeline_dispose (GObject *object)
 | 
			
		||||
 | 
			
		||||
  priv = self->priv;
 | 
			
		||||
 | 
			
		||||
  clutter_timeline_cancel_delay (self);
 | 
			
		||||
  if (priv->delay_id)
 | 
			
		||||
    {
 | 
			
		||||
      g_source_remove (priv->delay_id);
 | 
			
		||||
      priv->delay_id = 0;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
  if (priv->progress_notify != NULL)
 | 
			
		||||
    {
 | 
			
		||||
@@ -1214,11 +1213,15 @@ clutter_timeline_pause (ClutterTimeline *timeline)
 | 
			
		||||
 | 
			
		||||
  priv = timeline->priv;
 | 
			
		||||
 | 
			
		||||
  clutter_timeline_cancel_delay (timeline);
 | 
			
		||||
 | 
			
		||||
  if (!priv->is_playing)
 | 
			
		||||
  if (priv->delay_id == 0 && !priv->is_playing)
 | 
			
		||||
    return;
 | 
			
		||||
 | 
			
		||||
  if (priv->delay_id)
 | 
			
		||||
    {
 | 
			
		||||
      g_source_remove (priv->delay_id);
 | 
			
		||||
      priv->delay_id = 0;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
  priv->msecs_delta = 0;
 | 
			
		||||
  set_is_playing (timeline, FALSE);
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -134,6 +134,7 @@ clutter_transition_stopped (ClutterTimeline *timeline,
 | 
			
		||||
      clutter_transition_detach (CLUTTER_TRANSITION (timeline),
 | 
			
		||||
                                 priv->animatable);
 | 
			
		||||
      g_clear_object (&priv->animatable);
 | 
			
		||||
      g_object_unref (timeline);
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -204,7 +204,7 @@ clutter_stage_cogl_schedule_update (ClutterStageWindow *stage_window,
 | 
			
		||||
  if (max_render_time_allowed <= 0)
 | 
			
		||||
    {
 | 
			
		||||
      g_warning ("Unsupported monitor refresh rate detected. "
 | 
			
		||||
                 "(Refresh rate: %.3f, refresh interval: %" G_GINT64_FORMAT ")",
 | 
			
		||||
                 "(Refresh rate: %.3f, refresh interval: %ld)",
 | 
			
		||||
                 refresh_rate,
 | 
			
		||||
                 refresh_interval);
 | 
			
		||||
      stage_cogl->update_time = now;
 | 
			
		||||
@@ -526,7 +526,11 @@ paint_stage (ClutterStageCogl            *stage_cogl,
 | 
			
		||||
  _clutter_stage_maybe_setup_viewport (stage, view);
 | 
			
		||||
  _clutter_stage_paint_view (stage, view, clip);
 | 
			
		||||
 | 
			
		||||
  clutter_stage_view_blit_offscreen (view, clip);
 | 
			
		||||
  if (clutter_stage_view_get_onscreen (view) !=
 | 
			
		||||
      clutter_stage_view_get_framebuffer (view))
 | 
			
		||||
    {
 | 
			
		||||
      clutter_stage_view_blit_offscreen (view, clip);
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static void
 | 
			
		||||
 
 | 
			
		||||
@@ -62,7 +62,7 @@ if have_introspection
 | 
			
		||||
    ],
 | 
			
		||||
    extra_args: introspection_args + [
 | 
			
		||||
      '-UCOGL_COMPILATION',
 | 
			
		||||
      '-DG_LOG_DOMAIN="CoglPango"',
 | 
			
		||||
      '-DG_LOG_DOMAIN=\"CoglPango\"',
 | 
			
		||||
    ],
 | 
			
		||||
    install_dir_gir: pkglibdir,
 | 
			
		||||
    install_dir_typelib: pkglibdir,
 | 
			
		||||
 
 | 
			
		||||
@@ -1374,11 +1374,6 @@ cogl_blit_framebuffer (CoglFramebuffer *src,
 | 
			
		||||
      return FALSE;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
  /* Make sure any batched primitives get submitted to the driver
 | 
			
		||||
   * before blitting
 | 
			
		||||
   */
 | 
			
		||||
  _cogl_framebuffer_flush_journal (src);
 | 
			
		||||
 | 
			
		||||
  /* Make sure the current framebuffers are bound. We explicitly avoid
 | 
			
		||||
     flushing the clip state so we can bind our own empty state */
 | 
			
		||||
  _cogl_framebuffer_flush_state (dest,
 | 
			
		||||
 
 | 
			
		||||
@@ -45,6 +45,18 @@ struct _CoglTextureDriver
 | 
			
		||||
           GLenum gl_target,
 | 
			
		||||
           CoglPixelFormat internal_format);
 | 
			
		||||
 | 
			
		||||
  /*
 | 
			
		||||
   * This sets up the glPixelStore state for an upload to a destination with
 | 
			
		||||
   * the same size, and with no offset.
 | 
			
		||||
   */
 | 
			
		||||
  /* NB: GLES can't upload a sub region of pixel data from a larger source
 | 
			
		||||
   * buffer which is why this interface is limited. The GL driver has a more
 | 
			
		||||
   * flexible version of this function that is uses internally */
 | 
			
		||||
  void
 | 
			
		||||
  (* prep_gl_for_pixels_upload) (CoglContext *ctx,
 | 
			
		||||
                                 int pixels_rowstride,
 | 
			
		||||
                                 int pixels_bpp);
 | 
			
		||||
 | 
			
		||||
  /*
 | 
			
		||||
   * This uploads a sub-region from source_bmp to a single GL texture
 | 
			
		||||
   * handle (i.e a single CoglTexture slice)
 | 
			
		||||
 
 | 
			
		||||
@@ -132,6 +132,14 @@ prep_gl_for_pixels_upload_full (CoglContext *ctx,
 | 
			
		||||
  _cogl_texture_gl_prep_alignment_for_pixels_upload (ctx, pixels_rowstride);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static void
 | 
			
		||||
_cogl_texture_driver_prep_gl_for_pixels_upload (CoglContext *ctx,
 | 
			
		||||
                                                int pixels_rowstride,
 | 
			
		||||
                                                int pixels_bpp)
 | 
			
		||||
{
 | 
			
		||||
  prep_gl_for_pixels_upload_full (ctx, pixels_rowstride, 0, 0, 0, pixels_bpp);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/* OpenGL - unlike GLES - can download pixel data into a sub region of
 | 
			
		||||
 * a larger destination buffer */
 | 
			
		||||
static void
 | 
			
		||||
@@ -422,6 +430,7 @@ const CoglTextureDriver
 | 
			
		||||
_cogl_texture_driver_gl =
 | 
			
		||||
  {
 | 
			
		||||
    _cogl_texture_driver_gen,
 | 
			
		||||
    _cogl_texture_driver_prep_gl_for_pixels_upload,
 | 
			
		||||
    _cogl_texture_driver_upload_subregion_to_gl,
 | 
			
		||||
    _cogl_texture_driver_upload_to_gl,
 | 
			
		||||
    _cogl_texture_driver_prep_gl_for_pixels_download,
 | 
			
		||||
 
 | 
			
		||||
@@ -453,6 +453,7 @@ const CoglTextureDriver
 | 
			
		||||
_cogl_texture_driver_gles =
 | 
			
		||||
  {
 | 
			
		||||
    _cogl_texture_driver_gen,
 | 
			
		||||
    _cogl_texture_driver_prep_gl_for_pixels_upload,
 | 
			
		||||
    _cogl_texture_driver_upload_subregion_to_gl,
 | 
			
		||||
    _cogl_texture_driver_upload_to_gl,
 | 
			
		||||
    _cogl_texture_driver_prep_gl_for_pixels_download,
 | 
			
		||||
 
 | 
			
		||||
@@ -406,7 +406,7 @@ try_create_context (CoglDisplay *display,
 | 
			
		||||
                       &value);
 | 
			
		||||
 | 
			
		||||
      if (value != EGL_CONTEXT_PRIORITY_HIGH_IMG)
 | 
			
		||||
        g_message ("Failed to obtain high priority context");
 | 
			
		||||
        g_warning ("Failed to obtain high priority context");
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
  if (egl_renderer->platform_vtable->context_created &&
 | 
			
		||||
 
 | 
			
		||||
@@ -61,9 +61,6 @@
 | 
			
		||||
/* XKB base prefix */
 | 
			
		||||
#mesondefine XKB_BASE
 | 
			
		||||
 | 
			
		||||
/* Whether <sys/prctl.h> exists and it defines prctl() */
 | 
			
		||||
#mesondefine HAVE_SYS_PRCTL
 | 
			
		||||
 | 
			
		||||
/* Either <sys/random.h> or <linux/random.h> */
 | 
			
		||||
#mesondefine HAVE_SYS_RANDOM
 | 
			
		||||
#mesondefine HAVE_LINUX_RANDOM
 | 
			
		||||
 
 | 
			
		||||
@@ -1,5 +1,5 @@
 | 
			
		||||
project('mutter', 'c',
 | 
			
		||||
  version: '3.34.3',
 | 
			
		||||
  version: '3.33.91',
 | 
			
		||||
  meson_version: '>= 0.50.0',
 | 
			
		||||
  license: 'GPLv2+'
 | 
			
		||||
)
 | 
			
		||||
@@ -286,9 +286,6 @@ foreach function : required_functions
 | 
			
		||||
  endif
 | 
			
		||||
endforeach
 | 
			
		||||
 | 
			
		||||
if host_machine.cpu_family() == 'x86'
 | 
			
		||||
  add_project_arguments('-ffloat-store', language: 'c')
 | 
			
		||||
endif
 | 
			
		||||
add_project_arguments('-D_GNU_SOURCE', language: 'c')
 | 
			
		||||
 | 
			
		||||
buildtype = get_option('buildtype')
 | 
			
		||||
@@ -366,10 +363,6 @@ cdata.set('HAVE_PROFILER', have_profiler)
 | 
			
		||||
xkb_base = xkeyboard_config_dep.get_pkgconfig_variable('xkb_base')
 | 
			
		||||
cdata.set_quoted('XKB_BASE', xkb_base)
 | 
			
		||||
 | 
			
		||||
if cc.has_header_symbol('sys/prctl.h', 'prctl')
 | 
			
		||||
  cdata.set('HAVE_SYS_PRCTL', 1)
 | 
			
		||||
endif
 | 
			
		||||
 | 
			
		||||
if have_wayland
 | 
			
		||||
  xwayland_path = get_option('xwayland_path')
 | 
			
		||||
  if xwayland_path == ''
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										6
									
								
								po/ca.po
									
									
									
									
									
								
							
							
						
						
									
										6
									
								
								po/ca.po
									
									
									
									
									
								
							@@ -189,7 +189,7 @@ msgstr "Canvia entre el mode a pantalla completa"
 | 
			
		||||
 | 
			
		||||
#: data/50-mutter-windows.xml:12
 | 
			
		||||
msgid "Toggle maximization state"
 | 
			
		||||
msgstr "Canvia l'estat de maximització"
 | 
			
		||||
msgstr "Canvia l'estat de maximització"
 | 
			
		||||
 | 
			
		||||
#: data/50-mutter-windows.xml:14
 | 
			
		||||
msgid "Maximize window"
 | 
			
		||||
@@ -218,8 +218,8 @@ msgstr "Redimensiona la finestra"
 | 
			
		||||
#: data/50-mutter-windows.xml:27
 | 
			
		||||
msgid "Toggle window on all workspaces or one"
 | 
			
		||||
msgstr ""
 | 
			
		||||
"Canvia la funció que fa que la finestra estigui en tots els espais de "
 | 
			
		||||
"treball o només en un"
 | 
			
		||||
"Canvia la funció que fa que la finestra estigui en tots els espais de "
 | 
			
		||||
"treball o només en un"
 | 
			
		||||
 | 
			
		||||
#: data/50-mutter-windows.xml:29
 | 
			
		||||
msgid "Raise window if covered, otherwise lower it"
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										114
									
								
								po/cs.po
									
									
									
									
									
								
							
							
						
						
									
										114
									
								
								po/cs.po
									
									
									
									
									
								
							@@ -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)"
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										166
									
								
								po/da.po
									
									
									
									
									
								
							
							
						
						
									
										166
									
								
								po/da.po
									
									
									
									
									
								
							@@ -1,5 +1,5 @@
 | 
			
		||||
# Danish translation of Mutter.
 | 
			
		||||
# Copyright (C) 2002-2009, 2012-2019.
 | 
			
		||||
# Copyright (C) 2002-2009, 2012-2018.
 | 
			
		||||
# This file is distributed under the same license as the metacity package.
 | 
			
		||||
# Kjartan Maraas <kmaraas@gnome.org>, 2002
 | 
			
		||||
# Keld simonsen <keld@dkuug.dk>, 2002
 | 
			
		||||
@@ -8,7 +8,7 @@
 | 
			
		||||
# Lasse Bang Mikkelsen <lbm@fatalerror.dk>, 2006.
 | 
			
		||||
# Kenneth Nielsen <k.nielsen81@gmail.com>, 2008.
 | 
			
		||||
# Joe Hansen <joedalton2@yahoo.dk>, 2011.
 | 
			
		||||
# Ask Hjorth Larsen <asklarsen@gmail.com>, 2007, 09, 10, 12, 13, 14, 15, 16, 17, 18, 19.
 | 
			
		||||
# Ask Hjorth Larsen <asklarsen@gmail.com>, 2007, 09, 10, 12, 13, 14, 15, 16, 17, 18.
 | 
			
		||||
#
 | 
			
		||||
# Ordliste:
 | 
			
		||||
#
 | 
			
		||||
@@ -20,8 +20,8 @@ msgid ""
 | 
			
		||||
msgstr ""
 | 
			
		||||
"Project-Id-Version: mutter\n"
 | 
			
		||||
"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/mutter/issues\n"
 | 
			
		||||
"POT-Creation-Date: 2019-10-02 04:01+0000\n"
 | 
			
		||||
"PO-Revision-Date: 2019-10-03 19:37+0200\n"
 | 
			
		||||
"POT-Creation-Date: 2019-02-04 17:52+0000\n"
 | 
			
		||||
"PO-Revision-Date: 2019-02-12 19:50+0100\n"
 | 
			
		||||
"Last-Translator: Alan Mortensen <alanmortensen.am@gmail.com>\n"
 | 
			
		||||
"Language-Team: Danish <dansk@dansk-gruppen.dk>\n"
 | 
			
		||||
"Language: da\n"
 | 
			
		||||
@@ -404,48 +404,32 @@ 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 ""
 | 
			
		||||
"For at slå eksperimentelle funktioner til, skal du tilføje "
 | 
			
		||||
"funktionsnøgleordet til listen. Om funktionen kræver genstart af "
 | 
			
		||||
"kompositoren afhænger af den givne funktion. Der er ingen garanti for, at "
 | 
			
		||||
"eksperimentelle funktioner forbliver tilgængelige eller mulige at "
 | 
			
		||||
"konfigurere. Forvent ikke at noget i denne indstilling nødvendigvis fungerer "
 | 
			
		||||
"i fremtiden. Mulige nøgleord i øjeblikket: • “scale-monitor-framebuffer” — "
 | 
			
		||||
"får mutter til som standard at arrangere logiske skærme i et logisk "
 | 
			
		||||
"pixelkoordinatrum, mens skærmes framebuffere skaleres frem for "
 | 
			
		||||
"vinduesindholdet for at håndtere HiDPI-skærme. Kræver ikke genstart. • “rt-"
 | 
			
		||||
"scheduler” — får mutter til at anmode om en lav prioritet til realtids-"
 | 
			
		||||
"prioritetstildeling. Den eksekverbare fil eller brugeren skal have "
 | 
			
		||||
"CAP_SYS_NICE. Kræver genstart. • “autostart-xwayland” — venter med at "
 | 
			
		||||
"initialisere Xwayland indtil det er nødvendigt, hvis der er X11-klienter. "
 | 
			
		||||
"Kræver genstart."
 | 
			
		||||
"kompositoren afhænger af den givne funktion. Der er ingen garanti for at "
 | 
			
		||||
"eksperimentelle funktion forbliver tilgængelige eller mulige at konfigurere. "
 | 
			
		||||
"Forvent ikke at noget i denne indstilling nødvendigvis fungerer i fremtiden. "
 | 
			
		||||
"Mulige nøgleord i øjeblikket: • “scale-monitor-framebuffer” — får mutter til "
 | 
			
		||||
"som standard at arrangere logiske skærme i et logisk pixelkoordinatrum, mens "
 | 
			
		||||
"skærmes framebuffere skaleres frem for vinduesindholdet for at håndtere "
 | 
			
		||||
"HiDPI-skærme. Kræver ikke genstart."
 | 
			
		||||
 | 
			
		||||
#: data/org.gnome.mutter.gschema.xml.in:134
 | 
			
		||||
msgid "Modifier to use to locate the pointer"
 | 
			
		||||
msgstr "Modifikationstast til at finde markøren"
 | 
			
		||||
 | 
			
		||||
#: data/org.gnome.mutter.gschema.xml.in:135
 | 
			
		||||
msgid "This key will initiate the “locate pointer” action."
 | 
			
		||||
msgstr "Denne tast starter handlingen “find markør”."
 | 
			
		||||
 | 
			
		||||
#: data/org.gnome.mutter.gschema.xml.in:155
 | 
			
		||||
#: data/org.gnome.mutter.gschema.xml.in:141
 | 
			
		||||
msgid "Select window from tab popup"
 | 
			
		||||
msgstr "Vælg vindue fra tab-pop-op"
 | 
			
		||||
 | 
			
		||||
#: data/org.gnome.mutter.gschema.xml.in:160
 | 
			
		||||
#: data/org.gnome.mutter.gschema.xml.in:146
 | 
			
		||||
msgid "Cancel tab popup"
 | 
			
		||||
msgstr "Annullér faneblads-pop-op"
 | 
			
		||||
 | 
			
		||||
#: data/org.gnome.mutter.gschema.xml.in:165
 | 
			
		||||
#: data/org.gnome.mutter.gschema.xml.in:151
 | 
			
		||||
msgid "Switch monitor configurations"
 | 
			
		||||
msgstr "Skift skærmkonfiguration"
 | 
			
		||||
 | 
			
		||||
# Mærkelig ting at rotere.  De mener nok at skifte cyclisk mellem nogle stykker, men "built-in"?
 | 
			
		||||
#: data/org.gnome.mutter.gschema.xml.in:170
 | 
			
		||||
#: data/org.gnome.mutter.gschema.xml.in:156
 | 
			
		||||
msgid "Rotates the built-in monitor configuration"
 | 
			
		||||
msgstr "Roterer den indbyggede skærmkonfiguration"
 | 
			
		||||
 | 
			
		||||
@@ -502,37 +486,27 @@ msgid "Re-enable shortcuts"
 | 
			
		||||
msgstr "Genaktivér genveje"
 | 
			
		||||
 | 
			
		||||
#: data/org.gnome.mutter.wayland.gschema.xml.in:64
 | 
			
		||||
msgid "Allow X11 grabs to lock keyboard focus with Xwayland"
 | 
			
		||||
msgstr "Tillad X11-indfangelse at låse tastaturfokus med Xwayland"
 | 
			
		||||
msgid "Allow grabs with Xwayland"
 | 
			
		||||
msgstr "Tillad indfangelse med Xwayland"
 | 
			
		||||
 | 
			
		||||
#: 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 ""
 | 
			
		||||
"Tillad at alle tastaturbegivenheder sendes til X11-vinduer med “override "
 | 
			
		||||
"redirect” via indfangelse ved kørsel i Xwayland. Denne indstilling er der "
 | 
			
		||||
"for at understøtte X11-klienter, som afbilder et “override redirect”-vindue "
 | 
			
		||||
"(som ikke modtager tastaturfokus) og udsende en tastaturindfangelse, som "
 | 
			
		||||
"tvinger alle tastaturbegivenheder til dét vindue. Denne indstilling bruges "
 | 
			
		||||
"sjældent, og har ingen virkning på normale X11-vinduer, som kan modtage "
 | 
			
		||||
"tastaturfokus under normale omstændigheder. For at en X11-"
 | 
			
		||||
"tastaturindfangelse behandles i Wayland, skal klienten også enten sende en "
 | 
			
		||||
"specifik X11-ClientMessage til rodvinduet eller være blandt de godkendte "
 | 
			
		||||
"programmer i nøglen “xwayland-grab-access-rules”."
 | 
			
		||||
"Tillad tastaturindfangelse af X11-programmer, som kører i Xwayland. For at "
 | 
			
		||||
"en X11-tastaturindfangelse behandles i Wayland, skal klienten også enten "
 | 
			
		||||
"sende en specifik X11-ClientMessage til rodvinduet eller være blandt de "
 | 
			
		||||
"godkendte programmer i nøglen “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 "Xwayland-programmer, som må indfange tastatur"
 | 
			
		||||
 | 
			
		||||
#: 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 "
 | 
			
		||||
@@ -559,7 +533,7 @@ msgstr ""
 | 
			
		||||
#. TRANSLATORS: This string refers to a button that switches between
 | 
			
		||||
#. * different modes.
 | 
			
		||||
#.
 | 
			
		||||
#: src/backends/meta-input-settings.c:2532
 | 
			
		||||
#: src/backends/meta-input-settings.c:2423
 | 
			
		||||
#, c-format
 | 
			
		||||
msgid "Mode Switch (Group %d)"
 | 
			
		||||
msgstr "Tilstandsskift (Gruppe %d)"
 | 
			
		||||
@@ -567,113 +541,110 @@ msgstr "Tilstandsskift (Gruppe %d)"
 | 
			
		||||
#. TRANSLATORS: This string refers to an action, cycles drawing tablets'
 | 
			
		||||
#. * mapping through the available outputs.
 | 
			
		||||
#.
 | 
			
		||||
#: src/backends/meta-input-settings.c:2555
 | 
			
		||||
#: src/backends/meta-input-settings.c:2446
 | 
			
		||||
msgid "Switch monitor"
 | 
			
		||||
msgstr "Skift skærm"
 | 
			
		||||
 | 
			
		||||
#: src/backends/meta-input-settings.c:2557
 | 
			
		||||
#: src/backends/meta-input-settings.c:2448
 | 
			
		||||
msgid "Show on-screen help"
 | 
			
		||||
msgstr "Vis integreret hjælp"
 | 
			
		||||
 | 
			
		||||
#: src/backends/meta-monitor.c:223
 | 
			
		||||
#: src/backends/meta-monitor-manager.c:954
 | 
			
		||||
msgid "Built-in display"
 | 
			
		||||
msgstr "Indbygget terminal"
 | 
			
		||||
 | 
			
		||||
#: src/backends/meta-monitor.c:252
 | 
			
		||||
#: src/backends/meta-monitor-manager.c:986
 | 
			
		||||
msgid "Unknown"
 | 
			
		||||
msgstr "Ukendt"
 | 
			
		||||
 | 
			
		||||
#: src/backends/meta-monitor.c:254
 | 
			
		||||
#: src/backends/meta-monitor-manager.c:988
 | 
			
		||||
msgid "Unknown Display"
 | 
			
		||||
msgstr "Ukendt terminal"
 | 
			
		||||
 | 
			
		||||
#: 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
 | 
			
		||||
#| msgid "%s %s"
 | 
			
		||||
msgctxt ""
 | 
			
		||||
"This is a monitor vendor name followed by product/model name where size in "
 | 
			
		||||
"inches could not be calculated, e.g. Dell U2414H"
 | 
			
		||||
msgid "%s %s"
 | 
			
		||||
msgstr "%s %s"
 | 
			
		||||
 | 
			
		||||
#. Translators: this string will appear in Sysprof
 | 
			
		||||
#: src/backends/meta-profiler.c:82
 | 
			
		||||
msgid "Compositor"
 | 
			
		||||
msgstr "Kompositor"
 | 
			
		||||
 | 
			
		||||
#. 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:509
 | 
			
		||||
#: src/compositor/compositor.c:482
 | 
			
		||||
#, c-format
 | 
			
		||||
msgid ""
 | 
			
		||||
"Another compositing manager is already running on screen %i on display “%s”."
 | 
			
		||||
msgstr "Der kører allerede en anden kompositor på skærm %i på terminal “%s”."
 | 
			
		||||
msgstr ""
 | 
			
		||||
"En anden komposithåndtering kører allerede på skærm %i på terminal “%s”."
 | 
			
		||||
 | 
			
		||||
#: src/core/bell.c:192
 | 
			
		||||
#: src/core/bell.c:252
 | 
			
		||||
msgid "Bell event"
 | 
			
		||||
msgstr "Bip-hændelse"
 | 
			
		||||
 | 
			
		||||
#: src/core/main.c:190
 | 
			
		||||
#: src/core/main.c:185
 | 
			
		||||
msgid "Disable connection to session manager"
 | 
			
		||||
msgstr "Deaktivér forbindelse til sessionshåndtering"
 | 
			
		||||
 | 
			
		||||
#: src/core/main.c:196
 | 
			
		||||
#: src/core/main.c:191
 | 
			
		||||
msgid "Replace the running window manager"
 | 
			
		||||
msgstr "Erstat den kørende vindueshåndtering"
 | 
			
		||||
 | 
			
		||||
#: src/core/main.c:202
 | 
			
		||||
#: src/core/main.c:197
 | 
			
		||||
msgid "Specify session management ID"
 | 
			
		||||
msgstr "Angiv sessionhåndterings-id"
 | 
			
		||||
 | 
			
		||||
#: src/core/main.c:207
 | 
			
		||||
#: src/core/main.c:202
 | 
			
		||||
msgid "X Display to use"
 | 
			
		||||
msgstr "X-terminal som bruges"
 | 
			
		||||
 | 
			
		||||
#: src/core/main.c:213
 | 
			
		||||
#: src/core/main.c:208
 | 
			
		||||
msgid "Initialize session from savefile"
 | 
			
		||||
msgstr "Initialisér session fra gemt fil"
 | 
			
		||||
 | 
			
		||||
#: src/core/main.c:219
 | 
			
		||||
#: src/core/main.c:214
 | 
			
		||||
msgid "Make X calls synchronous"
 | 
			
		||||
msgstr "Gør kald til X synkrone"
 | 
			
		||||
 | 
			
		||||
#: src/core/main.c:226
 | 
			
		||||
#: src/core/main.c:221
 | 
			
		||||
msgid "Run as a wayland compositor"
 | 
			
		||||
msgstr "Kør som en wayland-kompositor"
 | 
			
		||||
 | 
			
		||||
#: src/core/main.c:232
 | 
			
		||||
#: src/core/main.c:227
 | 
			
		||||
msgid "Run as a nested compositor"
 | 
			
		||||
msgstr "Kør som en indlejret kompositor"
 | 
			
		||||
 | 
			
		||||
#: src/core/main.c:238
 | 
			
		||||
#: src/core/main.c:233
 | 
			
		||||
msgid "Run wayland compositor without starting Xwayland"
 | 
			
		||||
msgstr "Kør wayland-kompositoren uden at starte Xwayland"
 | 
			
		||||
 | 
			
		||||
#: src/core/main.c:246
 | 
			
		||||
#: src/core/main.c:241
 | 
			
		||||
msgid "Run as a full display server, rather than nested"
 | 
			
		||||
msgstr "Kør som fuld terminalserver, frem for indlejret"
 | 
			
		||||
 | 
			
		||||
#: src/core/main.c:252
 | 
			
		||||
#: src/core/main.c:247
 | 
			
		||||
msgid "Run with X11 backend"
 | 
			
		||||
msgstr "Kør med X11-motor"
 | 
			
		||||
 | 
			
		||||
#. 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” svarer ikke."
 | 
			
		||||
 | 
			
		||||
#: src/core/meta-close-dialog-default.c:153
 | 
			
		||||
#: src/core/meta-close-dialog-default.c:152
 | 
			
		||||
msgid "Application is not responding."
 | 
			
		||||
msgstr "Program svarer ikke."
 | 
			
		||||
 | 
			
		||||
#: 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."
 | 
			
		||||
@@ -681,11 +652,11 @@ msgstr ""
 | 
			
		||||
"Du kan vælge at vente et lille stykke tid på at programmet fortsætter, eller "
 | 
			
		||||
"du kan tvinge programmet til at afslutte fuldstændigt."
 | 
			
		||||
 | 
			
		||||
#: src/core/meta-close-dialog-default.c:165
 | 
			
		||||
#: src/core/meta-close-dialog-default.c:164
 | 
			
		||||
msgid "_Force Quit"
 | 
			
		||||
msgstr "_Tving til at afslutte"
 | 
			
		||||
 | 
			
		||||
#: src/core/meta-close-dialog-default.c:165
 | 
			
		||||
#: src/core/meta-close-dialog-default.c:164
 | 
			
		||||
msgid "_Wait"
 | 
			
		||||
msgstr "_Vent"
 | 
			
		||||
 | 
			
		||||
@@ -712,21 +683,21 @@ msgstr "Vis version"
 | 
			
		||||
msgid "Mutter plugin to use"
 | 
			
		||||
msgstr "Mutter-udvidelsesmodul der skal bruges"
 | 
			
		||||
 | 
			
		||||
#: src/core/prefs.c:1849
 | 
			
		||||
#: src/core/prefs.c:1786
 | 
			
		||||
#, c-format
 | 
			
		||||
msgid "Workspace %d"
 | 
			
		||||
msgstr "Arbejdsområde %d"
 | 
			
		||||
 | 
			
		||||
#: src/core/util.c:122
 | 
			
		||||
#: src/core/util.c:121
 | 
			
		||||
msgid "Mutter was compiled without support for verbose mode\n"
 | 
			
		||||
msgstr "Mutter blev kompileret uden understøttelse for uddybende tilstand\n"
 | 
			
		||||
 | 
			
		||||
#: src/wayland/meta-wayland-tablet-pad.c:568
 | 
			
		||||
#: src/wayland/meta-wayland-tablet-pad.c:567
 | 
			
		||||
#, c-format
 | 
			
		||||
msgid "Mode Switch: Mode %d"
 | 
			
		||||
msgstr "Tilstandsskift: Tilstand %d"
 | 
			
		||||
 | 
			
		||||
#: src/x11/meta-x11-display.c:679
 | 
			
		||||
#: src/x11/meta-x11-display.c:666
 | 
			
		||||
#, c-format
 | 
			
		||||
msgid ""
 | 
			
		||||
"Display “%s” already has a window manager; try using the --replace option to "
 | 
			
		||||
@@ -735,25 +706,20 @@ msgstr ""
 | 
			
		||||
"Terminalen “%s” har allerede en vindueshåndtering; prøv tilvalget --replace "
 | 
			
		||||
"for at erstatte den aktuelle vindueshåndtering."
 | 
			
		||||
 | 
			
		||||
#: src/x11/meta-x11-display.c:1040
 | 
			
		||||
#: src/x11/meta-x11-display.c:1008
 | 
			
		||||
msgid "Failed to initialize GDK\n"
 | 
			
		||||
msgstr "Kunne ikke klargøre GDK\n"
 | 
			
		||||
 | 
			
		||||
#: src/x11/meta-x11-display.c:1064
 | 
			
		||||
#: src/x11/meta-x11-display.c:1032
 | 
			
		||||
#, c-format
 | 
			
		||||
msgid "Failed to open X Window System display “%s”\n"
 | 
			
		||||
msgstr "Kunne ikke åbne X Window System-terminalen “%s”\n"
 | 
			
		||||
 | 
			
		||||
#: src/x11/meta-x11-display.c:1147
 | 
			
		||||
#: src/x11/meta-x11-display.c:1115
 | 
			
		||||
#, c-format
 | 
			
		||||
msgid "Screen %d on display “%s” is invalid\n"
 | 
			
		||||
msgstr "Skærm %d på terminal “%s” er ugyldig\n"
 | 
			
		||||
 | 
			
		||||
#: src/x11/meta-x11-selection-input-stream.c:445
 | 
			
		||||
#, c-format
 | 
			
		||||
msgid "Format %s not supported"
 | 
			
		||||
msgstr "Formatet %s understøttes ikke"
 | 
			
		||||
 | 
			
		||||
#: src/x11/session.c:1821
 | 
			
		||||
msgid ""
 | 
			
		||||
"These windows do not support “save current setup” and will have to be "
 | 
			
		||||
@@ -763,7 +729,7 @@ msgstr ""
 | 
			
		||||
"manuelt næste gang, du logger på."
 | 
			
		||||
 | 
			
		||||
# Lad os håbe dette er rigtigt
 | 
			
		||||
#: src/x11/window-props.c:569
 | 
			
		||||
#: src/x11/window-props.c:568
 | 
			
		||||
#, c-format
 | 
			
		||||
msgid "%s (on %s)"
 | 
			
		||||
msgstr "%s (på %s)"
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										10
									
								
								po/de.po
									
									
									
									
									
								
							
							
						
						
									
										10
									
								
								po/de.po
									
									
									
									
									
								
							@@ -14,8 +14,8 @@ 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-05 23:42+0200\n"
 | 
			
		||||
"Last-Translator: Christian Kirbach <christian.kirbach@gmail.com>\n"
 | 
			
		||||
"PO-Revision-Date: 2019-08-24 21:36+0200\n"
 | 
			
		||||
"Last-Translator: Tim Sabsch <tim@sabsch.com>\n"
 | 
			
		||||
"Language-Team: Deutsch <gnome-de@gnome.org>\n"
 | 
			
		||||
"Language: de\n"
 | 
			
		||||
"MIME-Version: 1.0\n"
 | 
			
		||||
@@ -152,15 +152,13 @@ msgstr "Zur Arbeitsfläche 4 wechseln"
 | 
			
		||||
msgid "Switch to last workspace"
 | 
			
		||||
msgstr "Zur letzten Arbeitsfläche wechseln"
 | 
			
		||||
 | 
			
		||||
# Wechsel der Arbeitsfläche. Es wird nichts verschoben.
 | 
			
		||||
#: data/50-mutter-navigation.xml:123
 | 
			
		||||
msgid "Move to workspace above"
 | 
			
		||||
msgstr "Zur Arbeitsfläche darüber wechseln"
 | 
			
		||||
msgstr "Auf Arbeitsfläche darüber verschieben"
 | 
			
		||||
 | 
			
		||||
# Wechsel der Arbeitsfläche. Es wird nichts verschoben.
 | 
			
		||||
#: data/50-mutter-navigation.xml:126
 | 
			
		||||
msgid "Move to workspace below"
 | 
			
		||||
msgstr "Zur Arbeitsfläche darunter wechseln"
 | 
			
		||||
msgstr "Auf Arbeitsfläche darunter verschieben"
 | 
			
		||||
 | 
			
		||||
#: data/50-mutter-system.xml:6 data/50-mutter-wayland.xml:6
 | 
			
		||||
msgid "System"
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										208
									
								
								po/en_GB.po
									
									
									
									
									
								
							
							
						
						
									
										208
									
								
								po/en_GB.po
									
									
									
									
									
								
							@@ -6,22 +6,21 @@
 | 
			
		||||
# Philip Withnall <philip@tecnocode.co.uk>, 2010.
 | 
			
		||||
# Chris Leonard <cjlhomeaddress@gmail.com>, 2012.
 | 
			
		||||
# Bruce Cowan <bruce@bcowan.me.uk>, 2011, 2012, 2013, 2018.
 | 
			
		||||
# Zander Brown <zbrown@gnome.org>, 2019.
 | 
			
		||||
#
 | 
			
		||||
msgid ""
 | 
			
		||||
msgstr ""
 | 
			
		||||
"Project-Id-Version: mutter\n"
 | 
			
		||||
"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/mutter/issues\n"
 | 
			
		||||
"POT-Creation-Date: 2019-11-22 01:35+0000\n"
 | 
			
		||||
"PO-Revision-Date: 2019-08-25 15:11+0100\n"
 | 
			
		||||
"Last-Translator: Zander Brown <zbrown@gnome.org>\n"
 | 
			
		||||
"Language-Team: English - United Kingdom <en_GB@li.org>\n"
 | 
			
		||||
"POT-Creation-Date: 2018-07-07 09:58+0000\n"
 | 
			
		||||
"PO-Revision-Date: 2018-08-19 17:43+0100\n"
 | 
			
		||||
"Last-Translator: Bruce Cowan <bruce@bcowan.me.uk>\n"
 | 
			
		||||
"Language-Team: British English <en@li.org>\n"
 | 
			
		||||
"Language: en_GB\n"
 | 
			
		||||
"MIME-Version: 1.0\n"
 | 
			
		||||
"Content-Type: text/plain; charset=UTF-8\n"
 | 
			
		||||
"Content-Transfer-Encoding: 8bit\n"
 | 
			
		||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
 | 
			
		||||
"X-Generator: Gtranslator 3.32.1\n"
 | 
			
		||||
"X-Generator: Poedit 2.0.7\n"
 | 
			
		||||
"X-Project-Style: gnome\n"
 | 
			
		||||
 | 
			
		||||
#: data/50-mutter-navigation.xml:6
 | 
			
		||||
@@ -257,6 +256,11 @@ msgid "Modifier to use for extended window management operations"
 | 
			
		||||
msgstr "Modifier to use for extended window management operations"
 | 
			
		||||
 | 
			
		||||
#: data/org.gnome.mutter.gschema.xml.in:8
 | 
			
		||||
#| msgid ""
 | 
			
		||||
#| "This key will initiate the \"overlay\", which is a combination window "
 | 
			
		||||
#| "overview and application launching system. The default is intended to be "
 | 
			
		||||
#| "the \"Windows key\" on PC hardware. It's expected that this binding "
 | 
			
		||||
#| "either the default or set to the empty string."
 | 
			
		||||
msgid ""
 | 
			
		||||
"This key will initiate the “overlay”, which is a combination window overview "
 | 
			
		||||
"and application launching system. The default is intended to be the “Windows "
 | 
			
		||||
@@ -301,6 +305,10 @@ msgid "Workspaces are managed dynamically"
 | 
			
		||||
msgstr "Workspaces are managed dynamically"
 | 
			
		||||
 | 
			
		||||
#: data/org.gnome.mutter.gschema.xml.in:41
 | 
			
		||||
#| msgid ""
 | 
			
		||||
#| "Determines whether workspaces are managed dynamically or whether there's "
 | 
			
		||||
#| "a static number of workspaces (determined by the num-workspaces key in "
 | 
			
		||||
#| "org.gnome.desktop.wm.preferences)."
 | 
			
		||||
msgid ""
 | 
			
		||||
"Determines whether workspaces are managed dynamically or whether there’s a "
 | 
			
		||||
"static number of workspaces (determined by the num-workspaces key in org."
 | 
			
		||||
@@ -339,6 +347,10 @@ msgid "Delay focus changes until the pointer stops moving"
 | 
			
		||||
msgstr "Delay focus changes until the pointer stops moving"
 | 
			
		||||
 | 
			
		||||
#: data/org.gnome.mutter.gschema.xml.in:69
 | 
			
		||||
#| msgid ""
 | 
			
		||||
#| "If set to true, and the focus mode is either \"sloppy\" or \"mouse\" then "
 | 
			
		||||
#| "the focus will not be changed immediately when entering a window, but "
 | 
			
		||||
#| "only after the pointer stops moving."
 | 
			
		||||
msgid ""
 | 
			
		||||
"If set to true, and the focus mode is either “sloppy” or “mouse” then the "
 | 
			
		||||
"focus will not be changed immediately when entering a window, but only after "
 | 
			
		||||
@@ -353,6 +365,9 @@ msgid "Draggable border width"
 | 
			
		||||
msgstr "Draggable border width"
 | 
			
		||||
 | 
			
		||||
#: data/org.gnome.mutter.gschema.xml.in:80
 | 
			
		||||
#| msgid ""
 | 
			
		||||
#| "The amount of total draggable borders. If the theme's visible borders are "
 | 
			
		||||
#| "not enough, invisible borders will be added to meet this value."
 | 
			
		||||
msgid ""
 | 
			
		||||
"The amount of total draggable borders. If the theme’s visible borders are "
 | 
			
		||||
"not enough, invisible borders will be added to meet this value."
 | 
			
		||||
@@ -397,10 +412,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 ""
 | 
			
		||||
"To enable experimental features, add the feature keyword to the list. "
 | 
			
		||||
"Whether the feature requires restarting the compositor depends on the given "
 | 
			
		||||
@@ -409,32 +421,22 @@ msgstr ""
 | 
			
		||||
"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” — "
 | 
			
		||||
"initialises Xwayland lazily if there are X11 clients. Requires restart."
 | 
			
		||||
"manage HiDPI monitors. Does not require a restart."
 | 
			
		||||
 | 
			
		||||
#: data/org.gnome.mutter.gschema.xml.in:134
 | 
			
		||||
msgid "Modifier to use to locate the pointer"
 | 
			
		||||
msgstr "Modifier to use to locate the pointer"
 | 
			
		||||
 | 
			
		||||
#: data/org.gnome.mutter.gschema.xml.in:135
 | 
			
		||||
msgid "This key will initiate the “locate pointer” action."
 | 
			
		||||
msgstr "This key will initiate the “locate pointer” action."
 | 
			
		||||
 | 
			
		||||
#: data/org.gnome.mutter.gschema.xml.in:155
 | 
			
		||||
#: data/org.gnome.mutter.gschema.xml.in:141
 | 
			
		||||
msgid "Select window from tab popup"
 | 
			
		||||
msgstr "Select window from tab popup"
 | 
			
		||||
 | 
			
		||||
#: data/org.gnome.mutter.gschema.xml.in:160
 | 
			
		||||
#: data/org.gnome.mutter.gschema.xml.in:146
 | 
			
		||||
msgid "Cancel tab popup"
 | 
			
		||||
msgstr "Cancel tab popup"
 | 
			
		||||
 | 
			
		||||
#: data/org.gnome.mutter.gschema.xml.in:165
 | 
			
		||||
#: data/org.gnome.mutter.gschema.xml.in:151
 | 
			
		||||
#| msgid "Switch monitor"
 | 
			
		||||
msgid "Switch monitor configurations"
 | 
			
		||||
msgstr "Switch monitor configurations"
 | 
			
		||||
 | 
			
		||||
#: data/org.gnome.mutter.gschema.xml.in:170
 | 
			
		||||
#: data/org.gnome.mutter.gschema.xml.in:156
 | 
			
		||||
msgid "Rotates the built-in monitor configuration"
 | 
			
		||||
msgstr "Rotates the built-in monitor configuration"
 | 
			
		||||
 | 
			
		||||
@@ -491,36 +493,28 @@ msgid "Re-enable shortcuts"
 | 
			
		||||
msgstr "Re-enable shortcuts"
 | 
			
		||||
 | 
			
		||||
#: data/org.gnome.mutter.wayland.gschema.xml.in:64
 | 
			
		||||
msgid "Allow X11 grabs to lock keyboard focus with Xwayland"
 | 
			
		||||
msgstr "Allow X11 grabs to lock keyboard focus with Xwayland"
 | 
			
		||||
msgid "Allow grabs with Xwayland"
 | 
			
		||||
msgstr "Allow grabs with Xwayland"
 | 
			
		||||
 | 
			
		||||
#: 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 ""
 | 
			
		||||
"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”."
 | 
			
		||||
 | 
			
		||||
#: 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 "Xwayland applications allowed to issue keyboard grabs"
 | 
			
		||||
 | 
			
		||||
#: 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 "
 | 
			
		||||
@@ -547,122 +541,114 @@ msgstr ""
 | 
			
		||||
#. TRANSLATORS: This string refers to a button that switches between
 | 
			
		||||
#. * different modes.
 | 
			
		||||
#.
 | 
			
		||||
#: src/backends/meta-input-settings.c:2528
 | 
			
		||||
#: src/backends/meta-input-settings.c:2325
 | 
			
		||||
#, c-format
 | 
			
		||||
#| msgid "Mode Switch: Mode %d"
 | 
			
		||||
msgid "Mode Switch (Group %d)"
 | 
			
		||||
msgstr "Mode Switch (Group %d)"
 | 
			
		||||
 | 
			
		||||
#. TRANSLATORS: This string refers to an action, cycles drawing tablets'
 | 
			
		||||
#. * mapping through the available outputs.
 | 
			
		||||
#.
 | 
			
		||||
#: src/backends/meta-input-settings.c:2551
 | 
			
		||||
#: src/backends/meta-input-settings.c:2348
 | 
			
		||||
msgid "Switch monitor"
 | 
			
		||||
msgstr "Switch monitor"
 | 
			
		||||
 | 
			
		||||
#: src/backends/meta-input-settings.c:2553
 | 
			
		||||
#: src/backends/meta-input-settings.c:2350
 | 
			
		||||
msgid "Show on-screen help"
 | 
			
		||||
msgstr "Show on-screen help"
 | 
			
		||||
 | 
			
		||||
#: src/backends/meta-monitor.c:223
 | 
			
		||||
#: src/backends/meta-monitor-manager.c:907
 | 
			
		||||
msgid "Built-in display"
 | 
			
		||||
msgstr "Built-in display"
 | 
			
		||||
 | 
			
		||||
#: src/backends/meta-monitor.c:252
 | 
			
		||||
#: src/backends/meta-monitor-manager.c:930
 | 
			
		||||
msgid "Unknown"
 | 
			
		||||
msgstr "Unknown"
 | 
			
		||||
 | 
			
		||||
#: src/backends/meta-monitor.c:254
 | 
			
		||||
#: src/backends/meta-monitor-manager.c:932
 | 
			
		||||
msgid "Unknown Display"
 | 
			
		||||
msgstr "Unknown Display"
 | 
			
		||||
 | 
			
		||||
#: src/backends/meta-monitor.c:262
 | 
			
		||||
#. TRANSLATORS: this is a monitor vendor name, followed by a
 | 
			
		||||
#. * size in inches, like 'Dell 15"'
 | 
			
		||||
#.
 | 
			
		||||
#: src/backends/meta-monitor-manager.c:940
 | 
			
		||||
#, 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
 | 
			
		||||
#, c-format
 | 
			
		||||
msgctxt ""
 | 
			
		||||
"This is a monitor vendor name followed by product/model name where size in "
 | 
			
		||||
"inches could not be calculated, e.g. Dell U2414H"
 | 
			
		||||
msgid "%s %s"
 | 
			
		||||
msgstr "%s %s"
 | 
			
		||||
 | 
			
		||||
#. Translators: this string will appear in Sysprof
 | 
			
		||||
#: src/backends/meta-profiler.c:79
 | 
			
		||||
msgid "Compositor"
 | 
			
		||||
msgstr "Compositor"
 | 
			
		||||
 | 
			
		||||
#. 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:533
 | 
			
		||||
#: src/compositor/compositor.c:481
 | 
			
		||||
#, c-format
 | 
			
		||||
#| msgid ""
 | 
			
		||||
#| "Another compositing manager is already running on screen %i on display "
 | 
			
		||||
#| "\"%s\"."
 | 
			
		||||
msgid ""
 | 
			
		||||
"Another compositing manager is already running on screen %i on display “%s”."
 | 
			
		||||
msgstr ""
 | 
			
		||||
"Another compositing manager is already running on screen %i on display “%s”."
 | 
			
		||||
 | 
			
		||||
#: src/core/bell.c:192
 | 
			
		||||
#: src/core/bell.c:254
 | 
			
		||||
msgid "Bell event"
 | 
			
		||||
msgstr "Bell event"
 | 
			
		||||
 | 
			
		||||
#: src/core/main.c:190
 | 
			
		||||
#: src/core/main.c:191
 | 
			
		||||
msgid "Disable connection to session manager"
 | 
			
		||||
msgstr "Disable connection to session manager"
 | 
			
		||||
 | 
			
		||||
#: src/core/main.c:196
 | 
			
		||||
#: src/core/main.c:197
 | 
			
		||||
msgid "Replace the running window manager"
 | 
			
		||||
msgstr "Replace the running window manager"
 | 
			
		||||
 | 
			
		||||
#: src/core/main.c:202
 | 
			
		||||
#: src/core/main.c:203
 | 
			
		||||
msgid "Specify session management ID"
 | 
			
		||||
msgstr "Specify session management ID"
 | 
			
		||||
 | 
			
		||||
#: src/core/main.c:207
 | 
			
		||||
#: src/core/main.c:208
 | 
			
		||||
msgid "X Display to use"
 | 
			
		||||
msgstr "X Display to use"
 | 
			
		||||
 | 
			
		||||
#: src/core/main.c:213
 | 
			
		||||
#: src/core/main.c:214
 | 
			
		||||
msgid "Initialize session from savefile"
 | 
			
		||||
msgstr "Initialise session from savefile"
 | 
			
		||||
 | 
			
		||||
#: src/core/main.c:219
 | 
			
		||||
#: src/core/main.c:220
 | 
			
		||||
msgid "Make X calls synchronous"
 | 
			
		||||
msgstr "Make X calls synchronous"
 | 
			
		||||
 | 
			
		||||
#: src/core/main.c:226
 | 
			
		||||
#: src/core/main.c:227
 | 
			
		||||
msgid "Run as a wayland compositor"
 | 
			
		||||
msgstr "Run as a wayland compositor"
 | 
			
		||||
 | 
			
		||||
#: src/core/main.c:232
 | 
			
		||||
#: src/core/main.c:233
 | 
			
		||||
msgid "Run as a nested compositor"
 | 
			
		||||
msgstr "Run as a nested compositor"
 | 
			
		||||
 | 
			
		||||
#: src/core/main.c:238
 | 
			
		||||
#: src/core/main.c:239
 | 
			
		||||
msgid "Run wayland compositor without starting Xwayland"
 | 
			
		||||
msgstr "Run wayland compositor without starting Xwayland"
 | 
			
		||||
 | 
			
		||||
#: src/core/main.c:246
 | 
			
		||||
#: src/core/main.c:247
 | 
			
		||||
msgid "Run as a full display server, rather than nested"
 | 
			
		||||
msgstr "Run as a full display server, rather than nested"
 | 
			
		||||
 | 
			
		||||
#: src/core/main.c:252
 | 
			
		||||
#: src/core/main.c:253
 | 
			
		||||
msgid "Run with X11 backend"
 | 
			
		||||
msgstr "Run with X11 backend"
 | 
			
		||||
 | 
			
		||||
#. Translators: %s is a window title
 | 
			
		||||
#: src/core/meta-close-dialog-default.c:151
 | 
			
		||||
#: src/core/meta-close-dialog-default.c:148
 | 
			
		||||
#, c-format
 | 
			
		||||
msgid "“%s” is not responding."
 | 
			
		||||
msgstr "“%s” is not responding."
 | 
			
		||||
 | 
			
		||||
#: src/core/meta-close-dialog-default.c:153
 | 
			
		||||
#: src/core/meta-close-dialog-default.c:150
 | 
			
		||||
msgid "Application is not responding."
 | 
			
		||||
msgstr "Application is not responding."
 | 
			
		||||
 | 
			
		||||
#: src/core/meta-close-dialog-default.c:158
 | 
			
		||||
#: src/core/meta-close-dialog-default.c:155
 | 
			
		||||
msgid ""
 | 
			
		||||
"You may choose to wait a short while for it to continue or force the "
 | 
			
		||||
"application to quit entirely."
 | 
			
		||||
@@ -670,16 +656,22 @@ msgstr ""
 | 
			
		||||
"You may choose to wait a short while for it to continue or force the "
 | 
			
		||||
"application to quit entirely."
 | 
			
		||||
 | 
			
		||||
#: src/core/meta-close-dialog-default.c:165
 | 
			
		||||
#: src/core/meta-close-dialog-default.c:162
 | 
			
		||||
msgid "_Force Quit"
 | 
			
		||||
msgstr "_Force Quit"
 | 
			
		||||
 | 
			
		||||
#: src/core/meta-close-dialog-default.c:165
 | 
			
		||||
#: src/core/meta-close-dialog-default.c:162
 | 
			
		||||
msgid "_Wait"
 | 
			
		||||
msgstr "_Wait"
 | 
			
		||||
 | 
			
		||||
#: src/core/mutter.c:38
 | 
			
		||||
#: src/core/mutter.c:39
 | 
			
		||||
#, c-format
 | 
			
		||||
#| msgid ""
 | 
			
		||||
#| "mutter %s\n"
 | 
			
		||||
#| "Copyright (C) 2001-%d Havoc Pennington, Red Hat, Inc., and others\n"
 | 
			
		||||
#| "This is free software; see the source for copying conditions.\n"
 | 
			
		||||
#| "There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A "
 | 
			
		||||
#| "PARTICULAR PURPOSE.\n"
 | 
			
		||||
msgid ""
 | 
			
		||||
"mutter %s\n"
 | 
			
		||||
"Copyright © 2001-%d Havoc Pennington, Red Hat, Inc., and others\n"
 | 
			
		||||
@@ -693,30 +685,33 @@ msgstr ""
 | 
			
		||||
"There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A "
 | 
			
		||||
"PARTICULAR PURPOSE.\n"
 | 
			
		||||
 | 
			
		||||
#: src/core/mutter.c:52
 | 
			
		||||
#: src/core/mutter.c:53
 | 
			
		||||
msgid "Print version"
 | 
			
		||||
msgstr "Print version"
 | 
			
		||||
 | 
			
		||||
#: src/core/mutter.c:58
 | 
			
		||||
#: src/core/mutter.c:59
 | 
			
		||||
msgid "Mutter plugin to use"
 | 
			
		||||
msgstr "Mutter plugin to use"
 | 
			
		||||
 | 
			
		||||
#: src/core/prefs.c:1849
 | 
			
		||||
#: src/core/prefs.c:1915
 | 
			
		||||
#, c-format
 | 
			
		||||
msgid "Workspace %d"
 | 
			
		||||
msgstr "Workspace %d"
 | 
			
		||||
 | 
			
		||||
#: src/core/util.c:122
 | 
			
		||||
#: src/core/util.c:120
 | 
			
		||||
msgid "Mutter was compiled without support for verbose mode\n"
 | 
			
		||||
msgstr "Mutter was compiled without support for verbose mode\n"
 | 
			
		||||
 | 
			
		||||
#: src/wayland/meta-wayland-tablet-pad.c:568
 | 
			
		||||
#: src/wayland/meta-wayland-tablet-pad.c:567
 | 
			
		||||
#, c-format
 | 
			
		||||
msgid "Mode Switch: Mode %d"
 | 
			
		||||
msgstr "Mode Switch: Mode %d"
 | 
			
		||||
 | 
			
		||||
#: src/x11/meta-x11-display.c:675
 | 
			
		||||
#: src/x11/meta-x11-display.c:666
 | 
			
		||||
#, c-format
 | 
			
		||||
#| msgid ""
 | 
			
		||||
#| "Display \"%s\" already has a window manager; try using the --replace "
 | 
			
		||||
#| "option to replace the current window manager."
 | 
			
		||||
msgid ""
 | 
			
		||||
"Display “%s” already has a window manager; try using the --replace option to "
 | 
			
		||||
"replace the current window manager."
 | 
			
		||||
@@ -724,26 +719,26 @@ msgstr ""
 | 
			
		||||
"Display “%s” already has a window manager; try using the --replace option to "
 | 
			
		||||
"replace the current window manager."
 | 
			
		||||
 | 
			
		||||
#: src/x11/meta-x11-display.c:1036
 | 
			
		||||
#: src/x11/meta-x11-display.c:1010
 | 
			
		||||
msgid "Failed to initialize GDK\n"
 | 
			
		||||
msgstr "Failed to initialise GDK\n"
 | 
			
		||||
 | 
			
		||||
#: src/x11/meta-x11-display.c:1060
 | 
			
		||||
#: src/x11/meta-x11-display.c:1034
 | 
			
		||||
#, c-format
 | 
			
		||||
#| msgid "Failed to open X Window System display '%s'\n"
 | 
			
		||||
msgid "Failed to open X Window System display “%s”\n"
 | 
			
		||||
msgstr "Failed to open X Window System display “%s”\n"
 | 
			
		||||
 | 
			
		||||
#: src/x11/meta-x11-display.c:1143
 | 
			
		||||
#: src/x11/meta-x11-display.c:1117
 | 
			
		||||
#, c-format
 | 
			
		||||
#| msgid "Screen %d on display '%s' is invalid\n"
 | 
			
		||||
msgid "Screen %d on display “%s” is invalid\n"
 | 
			
		||||
msgstr "Screen %d on display “%s” is invalid\n"
 | 
			
		||||
 | 
			
		||||
#: src/x11/meta-x11-selection-input-stream.c:460
 | 
			
		||||
#, c-format
 | 
			
		||||
msgid "Format %s not supported"
 | 
			
		||||
msgstr "Format %s not supported"
 | 
			
		||||
 | 
			
		||||
#: src/x11/session.c:1821
 | 
			
		||||
#: src/x11/session.c:1819
 | 
			
		||||
#| msgid ""
 | 
			
		||||
#| "These windows do not support "save current setup" and will have "
 | 
			
		||||
#| "to be restarted manually next time you log in."
 | 
			
		||||
msgid ""
 | 
			
		||||
"These windows do not support “save current setup” and will have to be "
 | 
			
		||||
"restarted manually next time you log in."
 | 
			
		||||
@@ -751,7 +746,7 @@ msgstr ""
 | 
			
		||||
"These windows do not support “save current setup” and will have to be "
 | 
			
		||||
"restarted manually next time you log in."
 | 
			
		||||
 | 
			
		||||
#: src/x11/window-props.c:569
 | 
			
		||||
#: src/x11/window-props.c:565
 | 
			
		||||
#, c-format
 | 
			
		||||
msgid "%s (on %s)"
 | 
			
		||||
msgstr "%s (on %s)"
 | 
			
		||||
@@ -2038,6 +2033,9 @@ msgstr "%s (on %s)"
 | 
			
		||||
#~ msgid "Commands to run in response to keybindings"
 | 
			
		||||
#~ msgstr "Commands to run in response to keybindings"
 | 
			
		||||
 | 
			
		||||
#~ msgid "Compositing Manager"
 | 
			
		||||
#~ msgstr "Compositing Manager"
 | 
			
		||||
 | 
			
		||||
#~ msgid "Control how new windows get focus"
 | 
			
		||||
#~ msgstr "Control how new windows get focus"
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										157
									
								
								po/fr.po
									
									
									
									
									
								
							
							
						
						
									
										157
									
								
								po/fr.po
									
									
									
									
									
								
							@@ -11,24 +11,25 @@
 | 
			
		||||
# Cyprien Le Pannérer <cyplp@free.fr>, 2006.
 | 
			
		||||
# Robert-André Mauchin <zebob.m@gmail.com>, 2007.
 | 
			
		||||
# Stéphane Raimbault <stephane.raimbault@gmail.com>, 2007.
 | 
			
		||||
# Claude Paroz <claude@2xlibre.net>, 2008-2018.
 | 
			
		||||
# Bruno Brouard <annoa.b@gmail.com>, 2011-12.
 | 
			
		||||
# Jean-Baptiste Holcroft <jean-baptiste@holcroft.fr>, 2017.
 | 
			
		||||
# Charles Monzat <charles.monzat@numericable.fr>, 2016-2018.
 | 
			
		||||
# Claude Paroz <claude@2xlibre.net>, 2008-2019.
 | 
			
		||||
#
 | 
			
		||||
msgid ""
 | 
			
		||||
msgstr ""
 | 
			
		||||
"Project-Id-Version: mutter master\n"
 | 
			
		||||
"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/mutter/issues\n"
 | 
			
		||||
"POT-Creation-Date: 2019-09-01 14:53+0000\n"
 | 
			
		||||
"PO-Revision-Date: 2019-09-06 08:23+0200\n"
 | 
			
		||||
"Last-Translator: Claude Paroz <claude@2xlibre.net>\n"
 | 
			
		||||
"Language-Team: GNOME French Team <gnomefr@traduc.org>\n"
 | 
			
		||||
"POT-Creation-Date: 2019-02-09 11:19+0000\n"
 | 
			
		||||
"PO-Revision-Date: 2019-02-09 12:20+0100\n"
 | 
			
		||||
"Last-Translator: Charles Monzat <charles.monzat@numericable.fr>\n"
 | 
			
		||||
"Language-Team: français <gnomefr@traduc.org>\n"
 | 
			
		||||
"Language: fr\n"
 | 
			
		||||
"MIME-Version: 1.0\n"
 | 
			
		||||
"Content-Type: text/plain; charset=UTF-8\n"
 | 
			
		||||
"Content-Transfer-Encoding: 8bit\n"
 | 
			
		||||
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
 | 
			
		||||
"X-Generator: Gtranslator 3.30.0\n"
 | 
			
		||||
 | 
			
		||||
#: data/50-mutter-navigation.xml:6
 | 
			
		||||
msgid "Navigation"
 | 
			
		||||
@@ -176,7 +177,7 @@ msgstr "Afficher la fenêtre pour lancer une commande"
 | 
			
		||||
 | 
			
		||||
#: data/50-mutter-system.xml:10
 | 
			
		||||
msgid "Show the activities overview"
 | 
			
		||||
msgstr "Afficher la vue d’ensemble des activités"
 | 
			
		||||
msgstr "Afficher l’aperçu des activités"
 | 
			
		||||
 | 
			
		||||
#: data/50-mutter-wayland.xml:8
 | 
			
		||||
msgid "Restore the keyboard shortcuts"
 | 
			
		||||
@@ -409,10 +410,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 ""
 | 
			
		||||
"Pour activer les fonctionnalités expérimentales, ajoutez le mot-clé de la "
 | 
			
		||||
"fonctionnalité dans la liste. Selon la fonctionnalité, il peut être "
 | 
			
		||||
@@ -423,35 +421,23 @@ msgstr ""
 | 
			
		||||
"mutter d’utiliser par défaut une disposition par moniteur logique dans un "
 | 
			
		||||
"espace de coordonnées de pixels logique, tout en mettant à l’échelle les "
 | 
			
		||||
"« framebuffers » de moniteur au lieu des contenus de fenêtre pour pouvoir "
 | 
			
		||||
"gérer les moniteurs à haute densité. Cela ne nécessite pas de redémarrage. • "
 | 
			
		||||
"« rt-scheduler » — indique à mutter de demander un ordonnancement temps réel "
 | 
			
		||||
"à faible priorité. L’exécutable ou l’utilisateur doit avoir CAP_SYS_NICE. "
 | 
			
		||||
"Nécessite un redémarrage. • « autostart-xwayland » — initialise Xwayland de "
 | 
			
		||||
"manière différée s’il y a des clients X11. Nécessite un redémarrage."
 | 
			
		||||
"gérer les moniteurs à haute densité. Cela ne nécessite pas de redémarrage."
 | 
			
		||||
 | 
			
		||||
#: data/org.gnome.mutter.gschema.xml.in:134
 | 
			
		||||
msgid "Modifier to use to locate the pointer"
 | 
			
		||||
msgstr "Touche à utiliser pour situer le pointeur"
 | 
			
		||||
 | 
			
		||||
#: data/org.gnome.mutter.gschema.xml.in:135
 | 
			
		||||
msgid "This key will initiate the “locate pointer” action."
 | 
			
		||||
msgstr "Cette clé initie l’action « situer le pointeur »."
 | 
			
		||||
 | 
			
		||||
#: data/org.gnome.mutter.gschema.xml.in:155
 | 
			
		||||
#: data/org.gnome.mutter.gschema.xml.in:141
 | 
			
		||||
msgid "Select window from tab popup"
 | 
			
		||||
msgstr ""
 | 
			
		||||
"Sélectionner la fenêtre dans la vue qui apparaît suite à un appui sur la "
 | 
			
		||||
"touche tab"
 | 
			
		||||
 | 
			
		||||
#: data/org.gnome.mutter.gschema.xml.in:160
 | 
			
		||||
#: data/org.gnome.mutter.gschema.xml.in:146
 | 
			
		||||
msgid "Cancel tab popup"
 | 
			
		||||
msgstr "Fermer la vue qui apparaît suite à un appui sur la touche tab"
 | 
			
		||||
 | 
			
		||||
#: data/org.gnome.mutter.gschema.xml.in:165
 | 
			
		||||
#: data/org.gnome.mutter.gschema.xml.in:151
 | 
			
		||||
msgid "Switch monitor configurations"
 | 
			
		||||
msgstr "Changer de configuration de moniteur"
 | 
			
		||||
 | 
			
		||||
#: data/org.gnome.mutter.gschema.xml.in:170
 | 
			
		||||
#: data/org.gnome.mutter.gschema.xml.in:156
 | 
			
		||||
msgid "Rotates the built-in monitor configuration"
 | 
			
		||||
msgstr "Passe à la prochaine configuration intégrée de moniteur"
 | 
			
		||||
 | 
			
		||||
@@ -508,39 +494,28 @@ msgid "Re-enable shortcuts"
 | 
			
		||||
msgstr "Réactiver les raccourcis"
 | 
			
		||||
 | 
			
		||||
#: data/org.gnome.mutter.wayland.gschema.xml.in:64
 | 
			
		||||
msgid "Allow X11 grabs to lock keyboard focus with Xwayland"
 | 
			
		||||
msgstr ""
 | 
			
		||||
"Autoriser les captures X11 à verrouiller le focus du clavier avec Xwayland"
 | 
			
		||||
msgid "Allow grabs with Xwayland"
 | 
			
		||||
msgstr "Autoriser les captures clavier avec Xwayland"
 | 
			
		||||
 | 
			
		||||
#: 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 ""
 | 
			
		||||
"Permettre à tous les évènements clavier d’être routés vers les fenêtres X11 "
 | 
			
		||||
"« override redirect » avec capture lors du fonctionnement avec Xwayland. "
 | 
			
		||||
"Cette option permet de prendre en charge les clients X11 qui gèrent une "
 | 
			
		||||
"fenêtre « override redirect » (qui ne reçoit pas de focus clavier) et "
 | 
			
		||||
"produisent une capture clavier pour forcer tous les évènements clavier vers "
 | 
			
		||||
"cette fenêtre. Cette option est rarement utilisée et n’a aucun effet sur les "
 | 
			
		||||
"fenêtres X11 normales qui peuvent recevoir le focus du clavier dans des "
 | 
			
		||||
"circonstances normales. Pour qu’une capture X11 soit prise en compte sous "
 | 
			
		||||
"Wayland, le client doit aussi soit envoyer un ClientMessage X11 spécifique à "
 | 
			
		||||
"la fenêtre racine, soit figurer parmi la liste blanche des applications dans "
 | 
			
		||||
"la clé « xwayland-grab-access-rules »."
 | 
			
		||||
"Permettre aux captures de clavier émises par les applications X11 tournant "
 | 
			
		||||
"dans Xwayland d’être prises en compte. Pour que ceci puisse arriver, le "
 | 
			
		||||
"client doit aussi soit envoyer un ClientMessage X11 spécifique à la fenêtre "
 | 
			
		||||
"racine, soit figurer dans les applications autorisées dans la clé « xwayland-"
 | 
			
		||||
"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 "Applications Xwayland autorisées à émettre des captures clavier"
 | 
			
		||||
 | 
			
		||||
#: 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 "
 | 
			
		||||
@@ -567,7 +542,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 "Changement de mode (groupe %d)"
 | 
			
		||||
@@ -575,34 +550,34 @@ msgstr "Changement de mode (groupe %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 "Changer de moniteur"
 | 
			
		||||
 | 
			
		||||
#: src/backends/meta-input-settings.c:2556
 | 
			
		||||
#: src/backends/meta-input-settings.c:2448
 | 
			
		||||
msgid "Show on-screen help"
 | 
			
		||||
msgstr "Afficher l’aide à l’écran"
 | 
			
		||||
 | 
			
		||||
#: src/backends/meta-monitor.c:223
 | 
			
		||||
#: src/backends/meta-monitor-manager.c:954
 | 
			
		||||
msgid "Built-in display"
 | 
			
		||||
msgstr "Affichage intégré"
 | 
			
		||||
 | 
			
		||||
#: src/backends/meta-monitor.c:252
 | 
			
		||||
#: src/backends/meta-monitor-manager.c:986
 | 
			
		||||
msgid "Unknown"
 | 
			
		||||
msgstr "Inconnu"
 | 
			
		||||
 | 
			
		||||
#: src/backends/meta-monitor.c:254
 | 
			
		||||
#: src/backends/meta-monitor-manager.c:988
 | 
			
		||||
msgid "Unknown Display"
 | 
			
		||||
msgstr "Affichage inconnu"
 | 
			
		||||
 | 
			
		||||
#: 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 "
 | 
			
		||||
@@ -610,14 +585,9 @@ msgctxt ""
 | 
			
		||||
msgid "%s %s"
 | 
			
		||||
msgstr "%s %s"
 | 
			
		||||
 | 
			
		||||
#. Translators: this string will appear in Sysprof
 | 
			
		||||
#: src/backends/meta-profiler.c:82
 | 
			
		||||
msgid "Compositor"
 | 
			
		||||
msgstr "Compositeur"
 | 
			
		||||
 | 
			
		||||
#. 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:509
 | 
			
		||||
#: src/compositor/compositor.c:482
 | 
			
		||||
#, c-format
 | 
			
		||||
msgid ""
 | 
			
		||||
"Another compositing manager is already running on screen %i on display “%s”."
 | 
			
		||||
@@ -625,65 +595,65 @@ msgstr ""
 | 
			
		||||
"Un autre gestionnaire de composition est déjà lancé sur l’écran %i de "
 | 
			
		||||
"l’affichage « %s »."
 | 
			
		||||
 | 
			
		||||
#: src/core/bell.c:192
 | 
			
		||||
#: src/core/bell.c:252
 | 
			
		||||
msgid "Bell event"
 | 
			
		||||
msgstr "Évènement sonore"
 | 
			
		||||
 | 
			
		||||
#: src/core/main.c:186
 | 
			
		||||
#: src/core/main.c:185
 | 
			
		||||
msgid "Disable connection to session manager"
 | 
			
		||||
msgstr "Désactiver la connexion au gestionnaire de sessions"
 | 
			
		||||
 | 
			
		||||
#: src/core/main.c:192
 | 
			
		||||
#: src/core/main.c:191
 | 
			
		||||
msgid "Replace the running window manager"
 | 
			
		||||
msgstr "Remplacer le gestionnaire de fenêtres en cours de fonctionnement"
 | 
			
		||||
 | 
			
		||||
#: src/core/main.c:198
 | 
			
		||||
#: src/core/main.c:197
 | 
			
		||||
msgid "Specify session management ID"
 | 
			
		||||
msgstr "Indiquer l’ID de gestion de sessions"
 | 
			
		||||
 | 
			
		||||
#: src/core/main.c:203
 | 
			
		||||
#: src/core/main.c:202
 | 
			
		||||
msgid "X Display to use"
 | 
			
		||||
msgstr "Affichage X à utiliser"
 | 
			
		||||
 | 
			
		||||
#: src/core/main.c:209
 | 
			
		||||
#: src/core/main.c:208
 | 
			
		||||
msgid "Initialize session from savefile"
 | 
			
		||||
msgstr "Initialiser la session depuis le fichier de sauvegarde"
 | 
			
		||||
 | 
			
		||||
#: src/core/main.c:215
 | 
			
		||||
#: src/core/main.c:214
 | 
			
		||||
msgid "Make X calls synchronous"
 | 
			
		||||
msgstr "Rendre synchrones les appels à X"
 | 
			
		||||
 | 
			
		||||
#: src/core/main.c:222
 | 
			
		||||
#: src/core/main.c:221
 | 
			
		||||
msgid "Run as a wayland compositor"
 | 
			
		||||
msgstr "Lancer comme un compositeur wayland"
 | 
			
		||||
 | 
			
		||||
#: src/core/main.c:228
 | 
			
		||||
#: src/core/main.c:227
 | 
			
		||||
msgid "Run as a nested compositor"
 | 
			
		||||
msgstr "Lancer comme un compositeur imbriqué"
 | 
			
		||||
 | 
			
		||||
#: src/core/main.c:234
 | 
			
		||||
#: src/core/main.c:233
 | 
			
		||||
msgid "Run wayland compositor without starting Xwayland"
 | 
			
		||||
msgstr "Lancer le compositeur wayland sans démarrer Xwayland"
 | 
			
		||||
 | 
			
		||||
#: src/core/main.c:242
 | 
			
		||||
#: src/core/main.c:241
 | 
			
		||||
msgid "Run as a full display server, rather than nested"
 | 
			
		||||
msgstr "Lancer comme un serveur d’affichage complet, plutôt qu’imbriqué"
 | 
			
		||||
 | 
			
		||||
#: src/core/main.c:248
 | 
			
		||||
#: src/core/main.c:247
 | 
			
		||||
msgid "Run with X11 backend"
 | 
			
		||||
msgstr "Lancer avec le moteur 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 » ne répond pas."
 | 
			
		||||
 | 
			
		||||
#: src/core/meta-close-dialog-default.c:153
 | 
			
		||||
#: src/core/meta-close-dialog-default.c:152
 | 
			
		||||
msgid "Application is not responding."
 | 
			
		||||
msgstr "L’application ne répond pas."
 | 
			
		||||
 | 
			
		||||
#: 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."
 | 
			
		||||
@@ -691,11 +661,11 @@ msgstr ""
 | 
			
		||||
"Vous pouvez patienter un instant pour continuer ou forcer l’application à "
 | 
			
		||||
"quitter définitivement."
 | 
			
		||||
 | 
			
		||||
#: src/core/meta-close-dialog-default.c:165
 | 
			
		||||
#: src/core/meta-close-dialog-default.c:164
 | 
			
		||||
msgid "_Force Quit"
 | 
			
		||||
msgstr "_Forcer à quitter"
 | 
			
		||||
 | 
			
		||||
#: src/core/meta-close-dialog-default.c:165
 | 
			
		||||
#: src/core/meta-close-dialog-default.c:164
 | 
			
		||||
msgid "_Wait"
 | 
			
		||||
msgstr "_Attendre"
 | 
			
		||||
 | 
			
		||||
@@ -723,21 +693,21 @@ msgstr "Afficher la version"
 | 
			
		||||
msgid "Mutter plugin to use"
 | 
			
		||||
msgstr "Greffon de Mutter à utiliser"
 | 
			
		||||
 | 
			
		||||
#: src/core/prefs.c:1849
 | 
			
		||||
#: src/core/prefs.c:1786
 | 
			
		||||
#, c-format
 | 
			
		||||
msgid "Workspace %d"
 | 
			
		||||
msgstr "Espace de travail %d"
 | 
			
		||||
 | 
			
		||||
#: src/core/util.c:122
 | 
			
		||||
#: src/core/util.c:121
 | 
			
		||||
msgid "Mutter was compiled without support for verbose mode\n"
 | 
			
		||||
msgstr "Mutter a été compilé sans la prise en charge du mode bavard\n"
 | 
			
		||||
 | 
			
		||||
#: src/wayland/meta-wayland-tablet-pad.c:568
 | 
			
		||||
#: src/wayland/meta-wayland-tablet-pad.c:567
 | 
			
		||||
#, c-format
 | 
			
		||||
msgid "Mode Switch: Mode %d"
 | 
			
		||||
msgstr "Changement de mode : mode %d"
 | 
			
		||||
 | 
			
		||||
#: src/x11/meta-x11-display.c:679
 | 
			
		||||
#: src/x11/meta-x11-display.c:666
 | 
			
		||||
#, c-format
 | 
			
		||||
msgid ""
 | 
			
		||||
"Display “%s” already has a window manager; try using the --replace option to "
 | 
			
		||||
@@ -746,25 +716,20 @@ msgstr ""
 | 
			
		||||
"L’affichage « %s » a déjà un gestionnaire de fenêtres ; essayez d’utiliser "
 | 
			
		||||
"l’option --replace pour remplacer le gestionnaire de fenêtres actuel."
 | 
			
		||||
 | 
			
		||||
#: src/x11/meta-x11-display.c:1040
 | 
			
		||||
#: src/x11/meta-x11-display.c:1008
 | 
			
		||||
msgid "Failed to initialize GDK\n"
 | 
			
		||||
msgstr "L’initialisation de GDK a échoué\n"
 | 
			
		||||
 | 
			
		||||
#: src/x11/meta-x11-display.c:1064
 | 
			
		||||
#: src/x11/meta-x11-display.c:1032
 | 
			
		||||
#, c-format
 | 
			
		||||
msgid "Failed to open X Window System display “%s”\n"
 | 
			
		||||
msgstr "Impossible d’ouvrir l’affichage « %s » du système X Window\n"
 | 
			
		||||
 | 
			
		||||
#: src/x11/meta-x11-display.c:1147
 | 
			
		||||
#: src/x11/meta-x11-display.c:1115
 | 
			
		||||
#, c-format
 | 
			
		||||
msgid "Screen %d on display “%s” is invalid\n"
 | 
			
		||||
msgstr "L’écran %d sur l’affichage « %s » n’est pas valide\n"
 | 
			
		||||
 | 
			
		||||
#: src/x11/meta-x11-selection-input-stream.c:445
 | 
			
		||||
#, c-format
 | 
			
		||||
msgid "Format %s not supported"
 | 
			
		||||
msgstr "Le format %s n’est pas pris en charge"
 | 
			
		||||
 | 
			
		||||
#: src/x11/session.c:1821
 | 
			
		||||
msgid ""
 | 
			
		||||
"These windows do not support “save current setup” and will have to be "
 | 
			
		||||
@@ -774,7 +739,7 @@ msgstr ""
 | 
			
		||||
"configuration actuelle » et devront être redémarrées manuellement à la "
 | 
			
		||||
"prochaine connexion."
 | 
			
		||||
 | 
			
		||||
#: src/x11/window-props.c:569
 | 
			
		||||
#: src/x11/window-props.c:568
 | 
			
		||||
#, c-format
 | 
			
		||||
msgid "%s (on %s)"
 | 
			
		||||
msgstr "%s (sur %s)"
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										31
									
								
								po/fur.po
									
									
									
									
									
								
							
							
						
						
									
										31
									
								
								po/fur.po
									
									
									
									
									
								
							@@ -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"
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										50
									
								
								po/hr.po
									
									
									
									
									
								
							
							
						
						
									
										50
									
								
								po/hr.po
									
									
									
									
									
								
							@@ -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"
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										164
									
								
								po/it.po
									
									
									
									
									
								
							
							
						
						
									
										164
									
								
								po/it.po
									
									
									
									
									
								
							@@ -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-09-06 08:46+0000\n"
 | 
			
		||||
"PO-Revision-Date: 2019-09-10 10:56+0200\n"
 | 
			
		||||
"POT-Creation-Date: 2019-02-04 17:52+0000\n"
 | 
			
		||||
"PO-Revision-Date: 2019-02-15 15:48+0100\n"
 | 
			
		||||
"Last-Translator: Milo Casagrande <milo@milo.name>\n"
 | 
			
		||||
"Language-Team: Italian <tp@lists.linux.it>\n"
 | 
			
		||||
"Language: it\n"
 | 
			
		||||
@@ -21,7 +21,7 @@ msgstr ""
 | 
			
		||||
"Content-Type: text/plain; charset=UTF-8\n"
 | 
			
		||||
"Content-Transfer-Encoding: 8bit\n"
 | 
			
		||||
"Plural-Forms: nplurals=2; plural=(n!=1);\n"
 | 
			
		||||
"X-Generator: Poedit 2.2.3\n"
 | 
			
		||||
"X-Generator: Poedit 2.2.1\n"
 | 
			
		||||
 | 
			
		||||
#: data/50-mutter-navigation.xml:6
 | 
			
		||||
msgid "Navigation"
 | 
			
		||||
@@ -406,10 +406,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 ""
 | 
			
		||||
"Per abilitare le funzionalità sperimentali, aggiungere la parola chiave di "
 | 
			
		||||
"tale funzionalità nella lista. Se la funzionalità desiderata richiede il "
 | 
			
		||||
@@ -420,32 +417,21 @@ msgstr ""
 | 
			
		||||
"modo che mutter disponga gli schermi logici secondo uno spazio logico di "
 | 
			
		||||
"coordinate pixel, applicando il ridimensionamento ai framebuffer invece che "
 | 
			
		||||
"al contenuto della finestra, per gestire schermi HiDPI (non richiede il "
 | 
			
		||||
"riavvio). • “rt-scheduler” — Richiede uno scheduling real-time a bassa "
 | 
			
		||||
"priorità. L'eseguibile o l'utente deve avere la proprietà CAP_SYS_NICE "
 | 
			
		||||
"(richiede il riavvio). • “autostart-xwayland” — Avvia Xwayland passivamente "
 | 
			
		||||
"se ci sono client X11 (richiede il riavvio)."
 | 
			
		||||
"riavvio)."
 | 
			
		||||
 | 
			
		||||
#: data/org.gnome.mutter.gschema.xml.in:134
 | 
			
		||||
msgid "Modifier to use to locate the pointer"
 | 
			
		||||
msgstr "Modificatore da usare per trovare il puntatore"
 | 
			
		||||
 | 
			
		||||
#: data/org.gnome.mutter.gschema.xml.in:135
 | 
			
		||||
msgid "This key will initiate the “locate pointer” action."
 | 
			
		||||
msgstr "Questa chiave avvia l'azione di localizzazione del puntatore."
 | 
			
		||||
 | 
			
		||||
#: data/org.gnome.mutter.gschema.xml.in:155
 | 
			
		||||
#: data/org.gnome.mutter.gschema.xml.in:141
 | 
			
		||||
msgid "Select window from tab popup"
 | 
			
		||||
msgstr "Seleziona finestra dal tab popup"
 | 
			
		||||
 | 
			
		||||
#: data/org.gnome.mutter.gschema.xml.in:160
 | 
			
		||||
#: data/org.gnome.mutter.gschema.xml.in:146
 | 
			
		||||
msgid "Cancel tab popup"
 | 
			
		||||
msgstr "Annulla tab popup"
 | 
			
		||||
 | 
			
		||||
#: data/org.gnome.mutter.gschema.xml.in:165
 | 
			
		||||
#: data/org.gnome.mutter.gschema.xml.in:151
 | 
			
		||||
msgid "Switch monitor configurations"
 | 
			
		||||
msgstr "Cambia le configurazioni del monitor"
 | 
			
		||||
 | 
			
		||||
#: data/org.gnome.mutter.gschema.xml.in:170
 | 
			
		||||
#: data/org.gnome.mutter.gschema.xml.in:156
 | 
			
		||||
msgid "Rotates the built-in monitor configuration"
 | 
			
		||||
msgstr "Passa da una configurazione integrata all'altra del monitor"
 | 
			
		||||
 | 
			
		||||
@@ -502,40 +488,29 @@ msgid "Re-enable shortcuts"
 | 
			
		||||
msgstr "Riabilita scorciatoie"
 | 
			
		||||
 | 
			
		||||
#: data/org.gnome.mutter.wayland.gschema.xml.in:64
 | 
			
		||||
msgid "Allow X11 grabs to lock keyboard focus with Xwayland"
 | 
			
		||||
msgstr ""
 | 
			
		||||
"Consente alle catture X11 di bloccare il focus della tastiera con Xwayland"
 | 
			
		||||
msgid "Allow grabs with Xwayland"
 | 
			
		||||
msgstr "Consente la cattura con Xwayland"
 | 
			
		||||
 | 
			
		||||
#: 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 ""
 | 
			
		||||
"Consente a tutti gli eventi della tastiera di essere instradati verso "
 | 
			
		||||
"finestre \"override redirect\" di X11 con cattura quando in esecuzione in "
 | 
			
		||||
"Xwayland. Questa opzione serve per supportare i client X11 che mappano una "
 | 
			
		||||
"finestra \"override redirect\" (che non riceve il focus da tastiera) ed "
 | 
			
		||||
"emette una cattura della tastiera per forzare tutti gli eventi da tastiera "
 | 
			
		||||
"verso quella finestra. Questa opzione non viene usata raramente e non ha "
 | 
			
		||||
"alcun effetto sulle finestra X11 normali in grado di ricevere, in "
 | 
			
		||||
"circostanze normali, il focus da tastiera. Affinché la cattura X11 venga "
 | 
			
		||||
"considerata da Wayland, il client deve inviare uno specifico messaggio "
 | 
			
		||||
"ClientMessage X11 alla finestra principale o essere nell'elenco di "
 | 
			
		||||
"applicazioni autorizzate tramite la chiave \"xwayland-grab-access-rules\"."
 | 
			
		||||
"Consente la cattura della tastiera da applicazioni X11 in esecuzione su "
 | 
			
		||||
"Xwayland. Affinché la cattura X11 venga considerata da Wayland, il client "
 | 
			
		||||
"deve inviare uno specifico messaggio ClientMessage X11 alla finestra "
 | 
			
		||||
"principale o essere nell'elenco di applicazioni autorizzate tramite la "
 | 
			
		||||
"chiave \"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 ""
 | 
			
		||||
"Applicazioni Xwayland autorizzare a inizializzare catture della tastiera"
 | 
			
		||||
 | 
			
		||||
#: 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 "
 | 
			
		||||
@@ -562,7 +537,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 "Cambio modalità (gruppo %d)"
 | 
			
		||||
@@ -570,34 +545,34 @@ msgstr "Cambio modalità (gruppo %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 "Cambia monitor"
 | 
			
		||||
 | 
			
		||||
#: src/backends/meta-input-settings.c:2556
 | 
			
		||||
#: src/backends/meta-input-settings.c:2448
 | 
			
		||||
msgid "Show on-screen help"
 | 
			
		||||
msgstr "Mostra aiuto sullo schermo"
 | 
			
		||||
 | 
			
		||||
#: src/backends/meta-monitor.c:223
 | 
			
		||||
#: src/backends/meta-monitor-manager.c:954
 | 
			
		||||
msgid "Built-in display"
 | 
			
		||||
msgstr "Display integrato"
 | 
			
		||||
 | 
			
		||||
#: src/backends/meta-monitor.c:252
 | 
			
		||||
#: src/backends/meta-monitor-manager.c:986
 | 
			
		||||
msgid "Unknown"
 | 
			
		||||
msgstr "Sconosciuto"
 | 
			
		||||
 | 
			
		||||
#: src/backends/meta-monitor.c:254
 | 
			
		||||
#: src/backends/meta-monitor-manager.c:988
 | 
			
		||||
msgid "Unknown Display"
 | 
			
		||||
msgstr "Display sconosciuto"
 | 
			
		||||
 | 
			
		||||
#: 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 "
 | 
			
		||||
@@ -605,14 +580,9 @@ msgctxt ""
 | 
			
		||||
msgid "%s %s"
 | 
			
		||||
msgstr "%s %s"
 | 
			
		||||
 | 
			
		||||
#. Translators: this string will appear in Sysprof
 | 
			
		||||
#: src/backends/meta-profiler.c:82
 | 
			
		||||
msgid "Compositor"
 | 
			
		||||
msgstr "Compositor"
 | 
			
		||||
 | 
			
		||||
#. 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:509
 | 
			
		||||
#: src/compositor/compositor.c:482
 | 
			
		||||
#, c-format
 | 
			
		||||
msgid ""
 | 
			
		||||
"Another compositing manager is already running on screen %i on display “%s”."
 | 
			
		||||
@@ -620,65 +590,65 @@ msgstr ""
 | 
			
		||||
"Un altro compositing manager è già in esecuzione sullo schermo %i sul "
 | 
			
		||||
"display «%s»."
 | 
			
		||||
 | 
			
		||||
#: src/core/bell.c:192
 | 
			
		||||
#: src/core/bell.c:252
 | 
			
		||||
msgid "Bell event"
 | 
			
		||||
msgstr "Evento campanella"
 | 
			
		||||
 | 
			
		||||
#: src/core/main.c:186
 | 
			
		||||
#: src/core/main.c:185
 | 
			
		||||
msgid "Disable connection to session manager"
 | 
			
		||||
msgstr "Disabilita la connessione al gestore di sessione"
 | 
			
		||||
 | 
			
		||||
#: src/core/main.c:192
 | 
			
		||||
#: src/core/main.c:191
 | 
			
		||||
msgid "Replace the running window manager"
 | 
			
		||||
msgstr "Sostituisce il window manager in esecuzione"
 | 
			
		||||
 | 
			
		||||
#: src/core/main.c:198
 | 
			
		||||
#: src/core/main.c:197
 | 
			
		||||
msgid "Specify session management ID"
 | 
			
		||||
msgstr "Specifica l'ID di gestione sessione"
 | 
			
		||||
 | 
			
		||||
#: src/core/main.c:203
 | 
			
		||||
#: src/core/main.c:202
 | 
			
		||||
msgid "X Display to use"
 | 
			
		||||
msgstr "Display X da usare"
 | 
			
		||||
 | 
			
		||||
#: src/core/main.c:209
 | 
			
		||||
#: src/core/main.c:208
 | 
			
		||||
msgid "Initialize session from savefile"
 | 
			
		||||
msgstr "Inizializza la sessione da file salvato"
 | 
			
		||||
 | 
			
		||||
#: src/core/main.c:215
 | 
			
		||||
#: src/core/main.c:214
 | 
			
		||||
msgid "Make X calls synchronous"
 | 
			
		||||
msgstr "Rende le chiamate X sincrone"
 | 
			
		||||
 | 
			
		||||
#: src/core/main.c:222
 | 
			
		||||
#: src/core/main.c:221
 | 
			
		||||
msgid "Run as a wayland compositor"
 | 
			
		||||
msgstr "Esegui come compositor Wayland"
 | 
			
		||||
 | 
			
		||||
#: src/core/main.c:228
 | 
			
		||||
#: src/core/main.c:227
 | 
			
		||||
msgid "Run as a nested compositor"
 | 
			
		||||
msgstr "Esegui come compositor annidato"
 | 
			
		||||
 | 
			
		||||
#: src/core/main.c:234
 | 
			
		||||
#: src/core/main.c:233
 | 
			
		||||
msgid "Run wayland compositor without starting Xwayland"
 | 
			
		||||
msgstr "Esegui il compositor Wayland senza avviare Xwayland"
 | 
			
		||||
 | 
			
		||||
#: src/core/main.c:242
 | 
			
		||||
#: src/core/main.c:241
 | 
			
		||||
msgid "Run as a full display server, rather than nested"
 | 
			
		||||
msgstr "Esegui come display server invece che annidato"
 | 
			
		||||
 | 
			
		||||
#: src/core/main.c:248
 | 
			
		||||
#: src/core/main.c:247
 | 
			
		||||
msgid "Run with X11 backend"
 | 
			
		||||
msgstr "Esegui con sistema 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 "Nessuna risposta da %s."
 | 
			
		||||
 | 
			
		||||
#: src/core/meta-close-dialog-default.c:153
 | 
			
		||||
#: src/core/meta-close-dialog-default.c:152
 | 
			
		||||
msgid "Application is not responding."
 | 
			
		||||
msgstr "L'applicazione non risponde."
 | 
			
		||||
 | 
			
		||||
#: 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."
 | 
			
		||||
@@ -686,11 +656,11 @@ msgstr ""
 | 
			
		||||
"È possibile scegliere di attendere un po' lasciando che l'applicazione "
 | 
			
		||||
"continui, oppure forzare la terminazione dell'applicazione."
 | 
			
		||||
 | 
			
		||||
#: src/core/meta-close-dialog-default.c:165
 | 
			
		||||
#: src/core/meta-close-dialog-default.c:164
 | 
			
		||||
msgid "_Force Quit"
 | 
			
		||||
msgstr "_Forza uscita"
 | 
			
		||||
 | 
			
		||||
#: src/core/meta-close-dialog-default.c:165
 | 
			
		||||
#: src/core/meta-close-dialog-default.c:164
 | 
			
		||||
msgid "_Wait"
 | 
			
		||||
msgstr "_Attendi"
 | 
			
		||||
 | 
			
		||||
@@ -717,22 +687,22 @@ msgstr "Stampa la versione"
 | 
			
		||||
msgid "Mutter plugin to use"
 | 
			
		||||
msgstr "Plugin Mutter da usare"
 | 
			
		||||
 | 
			
		||||
#: src/core/prefs.c:1849
 | 
			
		||||
#: src/core/prefs.c:1786
 | 
			
		||||
#, c-format
 | 
			
		||||
msgid "Workspace %d"
 | 
			
		||||
msgstr "Spazio di lavoro %d"
 | 
			
		||||
 | 
			
		||||
#: src/core/util.c:122
 | 
			
		||||
#: src/core/util.c:121
 | 
			
		||||
msgid "Mutter was compiled without support for verbose mode\n"
 | 
			
		||||
msgstr ""
 | 
			
		||||
"Mutter è stato compilato escludendo il supporto per la modalità prolissa\n"
 | 
			
		||||
 | 
			
		||||
#: src/wayland/meta-wayland-tablet-pad.c:568
 | 
			
		||||
#: src/wayland/meta-wayland-tablet-pad.c:567
 | 
			
		||||
#, c-format
 | 
			
		||||
msgid "Mode Switch: Mode %d"
 | 
			
		||||
msgstr "Cambio modalità: modalità %d"
 | 
			
		||||
 | 
			
		||||
#: src/x11/meta-x11-display.c:679
 | 
			
		||||
#: src/x11/meta-x11-display.c:666
 | 
			
		||||
#, c-format
 | 
			
		||||
msgid ""
 | 
			
		||||
"Display “%s” already has a window manager; try using the --replace option to "
 | 
			
		||||
@@ -741,25 +711,20 @@ msgstr ""
 | 
			
		||||
"Il display «%s» ha già un window manager; provare a utilizzare l'opzione --"
 | 
			
		||||
"replace per sostituirlo."
 | 
			
		||||
 | 
			
		||||
#: src/x11/meta-x11-display.c:1040
 | 
			
		||||
#: src/x11/meta-x11-display.c:1008
 | 
			
		||||
msgid "Failed to initialize GDK\n"
 | 
			
		||||
msgstr "Inizializzazione GDK non riuscita\n"
 | 
			
		||||
 | 
			
		||||
#: src/x11/meta-x11-display.c:1064
 | 
			
		||||
#: src/x11/meta-x11-display.c:1032
 | 
			
		||||
#, c-format
 | 
			
		||||
msgid "Failed to open X Window System display “%s”\n"
 | 
			
		||||
msgstr "Apertura del display «%s» di X Window System non riuscita\n"
 | 
			
		||||
 | 
			
		||||
#: src/x11/meta-x11-display.c:1147
 | 
			
		||||
#: src/x11/meta-x11-display.c:1115
 | 
			
		||||
#, c-format
 | 
			
		||||
msgid "Screen %d on display “%s” is invalid\n"
 | 
			
		||||
msgstr "Lo schermo %d sul display «%s» non è valido\n"
 | 
			
		||||
 | 
			
		||||
#: src/x11/meta-x11-selection-input-stream.c:445
 | 
			
		||||
#, c-format
 | 
			
		||||
msgid "Format %s not supported"
 | 
			
		||||
msgstr "Formato %s non supportato"
 | 
			
		||||
 | 
			
		||||
#: src/x11/session.c:1821
 | 
			
		||||
msgid ""
 | 
			
		||||
"These windows do not support “save current setup” and will have to be "
 | 
			
		||||
@@ -768,7 +733,22 @@ msgstr ""
 | 
			
		||||
"Queste finestre non supportano la funzione «salva impostazioni attuali» e "
 | 
			
		||||
"dovranno essere riavviate manualmente al prossimo accesso."
 | 
			
		||||
 | 
			
		||||
#: src/x11/window-props.c:569
 | 
			
		||||
#: src/x11/window-props.c:568
 | 
			
		||||
#, c-format
 | 
			
		||||
msgid "%s (on %s)"
 | 
			
		||||
msgstr "%s (su %s)"
 | 
			
		||||
 | 
			
		||||
#~ msgid "Move window one workspace to the left"
 | 
			
		||||
#~ msgstr "Sposta la finestra sullo spazio di lavoro a sinistra"
 | 
			
		||||
 | 
			
		||||
#~ msgid "Move window one workspace to the right"
 | 
			
		||||
#~ msgstr "Sposta la finestra sullo spazio di lavoro a destra"
 | 
			
		||||
 | 
			
		||||
#~ msgid "Move to workspace left"
 | 
			
		||||
#~ msgstr "Sposta su spazio di lavoro a sinistra"
 | 
			
		||||
 | 
			
		||||
#~ msgid "Move to workspace right"
 | 
			
		||||
#~ msgstr "Sposta su spazio di lavoro a destra"
 | 
			
		||||
 | 
			
		||||
#~ msgid "Toggle shaded state"
 | 
			
		||||
#~ msgstr "Attiva/Disattiva lo stato arrotolato"
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										145
									
								
								po/ko.po
									
									
									
									
									
								
							
							
						
						
									
										145
									
								
								po/ko.po
									
									
									
									
									
								
							@@ -7,7 +7,7 @@
 | 
			
		||||
#
 | 
			
		||||
# Updated in mutter:
 | 
			
		||||
# Changwoo Ryu <cwryu@debian.org>, 2011-2017.
 | 
			
		||||
# Gwan-gyeong Mun <elongbug@gmail.com>, 2018-2019.
 | 
			
		||||
# Gwan-gyeong Mun <elongbug@gmail.com>, 2018.
 | 
			
		||||
#
 | 
			
		||||
#
 | 
			
		||||
# 주의:
 | 
			
		||||
@@ -18,8 +18,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-31 12:39+0000\n"
 | 
			
		||||
"PO-Revision-Date: 2019-09-03 17:49+0300\n"
 | 
			
		||||
"POT-Creation-Date: 2019-02-04 17:52+0000\n"
 | 
			
		||||
"PO-Revision-Date: 2019-02-27 13:38+0200\n"
 | 
			
		||||
"Last-Translator: Gwan-gyeong Mun <elongbug@gmail.com>\n"
 | 
			
		||||
"Language-Team: GNOME Korea <gnome-kr@googlegroups.com>\n"
 | 
			
		||||
"Language: ko\n"
 | 
			
		||||
@@ -395,43 +395,29 @@ 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 ""
 | 
			
		||||
"실험적인 기능을 사용하려면, 해당 기능 키워드를 목록에 추가하십시오. 기능에 따"
 | 
			
		||||
"라 컴포지터를 다시 시작해야 할 수도 있습니다. 실험적인 기능은 사용할 수 없을 "
 | 
			
		||||
"수도 있고, 설정할 수 없을 수도 있습니다. 이 설정에 추가한 사항이 앞으로 버전"
 | 
			
		||||
"에서도 동작할 거라고 기대하지 마십시오. 현재 가능한 값은: • “scale-monitor-"
 | 
			
		||||
"framebuffer” — 머터는 기본적으로 논리 픽셀 좌표 공간에서 논리 모니터를 배치하"
 | 
			
		||||
"고, HiDPI 모니터를 관리하기 위해 창 내용 대신 모니터 프레임 버퍼를 스케일링합"
 | 
			
		||||
"니다. 재시작은 필요하지 않습니다. • “rt-scheduler” — 머터 요청을 우선순위가 "
 | 
			
		||||
"낮은 실시간 스케줄링으로 만듭니다. 실행 파일 또는 사용자는 CAP_SYS_NICE가 있"
 | 
			
		||||
"어야 합니다. 재시작이 필요합니다. • “autostart-xwayland” — X11 클라이언트가 "
 | 
			
		||||
"있는 경우 X웨일랜드 초기화를 늦게 합니다. 재시작이 필요합니다."
 | 
			
		||||
"고, HiDPI 모니터를 관리하기 위해 윈도우 내용 대신 모니터 프레임버퍼를 스케일"
 | 
			
		||||
"링합니다. 재시작은 필요하지 않습니다."
 | 
			
		||||
 | 
			
		||||
#: data/org.gnome.mutter.gschema.xml.in:134
 | 
			
		||||
msgid "Modifier to use to locate the pointer"
 | 
			
		||||
msgstr "포인터 위치 찾기에 사용할 키"
 | 
			
		||||
 | 
			
		||||
#: data/org.gnome.mutter.gschema.xml.in:135
 | 
			
		||||
msgid "This key will initiate the “locate pointer” action."
 | 
			
		||||
msgstr "이 키는 “포인터 위치 찾기” 동작을 합니다."
 | 
			
		||||
 | 
			
		||||
#: data/org.gnome.mutter.gschema.xml.in:155
 | 
			
		||||
#: data/org.gnome.mutter.gschema.xml.in:141
 | 
			
		||||
msgid "Select window from tab popup"
 | 
			
		||||
msgstr "탭 팝업에서 창 선택"
 | 
			
		||||
 | 
			
		||||
#: data/org.gnome.mutter.gschema.xml.in:160
 | 
			
		||||
#: data/org.gnome.mutter.gschema.xml.in:146
 | 
			
		||||
msgid "Cancel tab popup"
 | 
			
		||||
msgstr "탭 팝업 취소"
 | 
			
		||||
 | 
			
		||||
#: data/org.gnome.mutter.gschema.xml.in:165
 | 
			
		||||
#: data/org.gnome.mutter.gschema.xml.in:151
 | 
			
		||||
msgid "Switch monitor configurations"
 | 
			
		||||
msgstr "모니터 설정 전환"
 | 
			
		||||
 | 
			
		||||
#: data/org.gnome.mutter.gschema.xml.in:170
 | 
			
		||||
#: data/org.gnome.mutter.gschema.xml.in:156
 | 
			
		||||
msgid "Rotates the built-in monitor configuration"
 | 
			
		||||
msgstr "내장된 모니터 설정을 돌아가면서 전환합니다"
 | 
			
		||||
 | 
			
		||||
@@ -488,34 +474,27 @@ msgid "Re-enable shortcuts"
 | 
			
		||||
msgstr "바로 가기 다시 사용하기"
 | 
			
		||||
 | 
			
		||||
#: data/org.gnome.mutter.wayland.gschema.xml.in:64
 | 
			
		||||
msgid "Allow X11 grabs to lock keyboard focus with Xwayland"
 | 
			
		||||
msgstr "키보드 포커스를 고정하는 X11 잡기를 X웨일랜드에서 허용"
 | 
			
		||||
msgid "Allow grabs with Xwayland"
 | 
			
		||||
msgstr "X웨일랜드에서 잡기 허용"
 | 
			
		||||
 | 
			
		||||
#: 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 ""
 | 
			
		||||
"X웨일랜드 환경에서 X11 “override redirect” 창이 잡기를 할 때 모든 키보드 이벤"
 | 
			
		||||
"트가 전달되도록 허용합니다. 이 옵션은 X11 클라이언트의 “override redirect”(키"
 | 
			
		||||
"보드 포커스를 받지 않는) 창에 모든 키보드 이벤트를 강제로 적용하는 키보드 잡"
 | 
			
		||||
"기를 지원합니다. 이 옵션은 거의 사용되지 않으며 일반적인 상황에서 키보드 포커"
 | 
			
		||||
"스를 받을 수 있는 일반 X11 창에는 영향을 미치지 않습니다. 웨일랜드에서 X11 잡"
 | 
			
		||||
"기를 고려하려면, 클라이언트는 특정 X11 클라이언트메시지를 루트 창에 보내거나 "
 | 
			
		||||
"“xwayland-grab-access-rules”의 허용 목록에 있는 프로그램 중 하나여야 합니다."
 | 
			
		||||
"X웨일랜드 환경에서 실행하는 X11 프로그램의 키보드 잡기 허용을 고려합니다. 웨"
 | 
			
		||||
"일랜드에서 X11 잡기를 고려하려면, 클라이언트는 특정 X11 클라이언트메시지를 루"
 | 
			
		||||
"트 창에 보내거나 \"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 "X웨일랜드 프로그램에서 키보드 잡기 허용"
 | 
			
		||||
 | 
			
		||||
#: 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 "
 | 
			
		||||
@@ -540,7 +519,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 "모드 전환 (그룹 %d)"
 | 
			
		||||
@@ -548,34 +527,34 @@ msgstr "모드 전환 (그룹 %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 "모니터 전환"
 | 
			
		||||
 | 
			
		||||
#: src/backends/meta-input-settings.c:2556
 | 
			
		||||
#: src/backends/meta-input-settings.c:2448
 | 
			
		||||
msgid "Show on-screen help"
 | 
			
		||||
msgstr "화면 도움말 표시"
 | 
			
		||||
 | 
			
		||||
#: src/backends/meta-monitor.c:223
 | 
			
		||||
#: src/backends/meta-monitor-manager.c:954
 | 
			
		||||
msgid "Built-in display"
 | 
			
		||||
msgstr "내장 디스플레이"
 | 
			
		||||
 | 
			
		||||
#: src/backends/meta-monitor.c:252
 | 
			
		||||
#: src/backends/meta-monitor-manager.c:986
 | 
			
		||||
msgid "Unknown"
 | 
			
		||||
msgstr "알 수 없음"
 | 
			
		||||
 | 
			
		||||
#: src/backends/meta-monitor.c:254
 | 
			
		||||
#: src/backends/meta-monitor-manager.c:988
 | 
			
		||||
msgid "Unknown Display"
 | 
			
		||||
msgstr "알 수 없는 디스플레이"
 | 
			
		||||
 | 
			
		||||
#: 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 "
 | 
			
		||||
@@ -583,14 +562,9 @@ msgctxt ""
 | 
			
		||||
msgid "%s %s"
 | 
			
		||||
msgstr "%s %s"
 | 
			
		||||
 | 
			
		||||
#. Translators: this string will appear in Sysprof
 | 
			
		||||
#: src/backends/meta-profiler.c:82
 | 
			
		||||
msgid "Compositor"
 | 
			
		||||
msgstr "컴포지터"
 | 
			
		||||
 | 
			
		||||
#. 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:509
 | 
			
		||||
#: src/compositor/compositor.c:482
 | 
			
		||||
#, c-format
 | 
			
		||||
msgid ""
 | 
			
		||||
"Another compositing manager is already running on screen %i on display “%s”."
 | 
			
		||||
@@ -598,75 +572,75 @@ msgstr ""
 | 
			
		||||
"다른 창 구성 관리 프로그램이 이미 디스플레이 “%2$s” 화면 %1$i번에서 실행 중입"
 | 
			
		||||
"니다."
 | 
			
		||||
 | 
			
		||||
#: src/core/bell.c:192
 | 
			
		||||
#: src/core/bell.c:252
 | 
			
		||||
msgid "Bell event"
 | 
			
		||||
msgstr "삑소리 이벤트"
 | 
			
		||||
 | 
			
		||||
#: src/core/main.c:186
 | 
			
		||||
#: src/core/main.c:185
 | 
			
		||||
msgid "Disable connection to session manager"
 | 
			
		||||
msgstr "세션 관리자와 연결 하지 않습니다"
 | 
			
		||||
 | 
			
		||||
#: src/core/main.c:192
 | 
			
		||||
#: src/core/main.c:191
 | 
			
		||||
msgid "Replace the running window manager"
 | 
			
		||||
msgstr "실행 중인 창 관리자를 바꿉니다"
 | 
			
		||||
 | 
			
		||||
#: src/core/main.c:198
 | 
			
		||||
#: src/core/main.c:197
 | 
			
		||||
msgid "Specify session management ID"
 | 
			
		||||
msgstr "세션 관리 ID를 지정합니다"
 | 
			
		||||
 | 
			
		||||
#: src/core/main.c:203
 | 
			
		||||
#: src/core/main.c:202
 | 
			
		||||
msgid "X Display to use"
 | 
			
		||||
msgstr "사용할 X 디스플레이"
 | 
			
		||||
 | 
			
		||||
#: src/core/main.c:209
 | 
			
		||||
#: src/core/main.c:208
 | 
			
		||||
msgid "Initialize session from savefile"
 | 
			
		||||
msgstr "저장 파일에서 세션을 초기화 합니다"
 | 
			
		||||
 | 
			
		||||
#: src/core/main.c:215
 | 
			
		||||
#: src/core/main.c:214
 | 
			
		||||
msgid "Make X calls synchronous"
 | 
			
		||||
msgstr "동기 X 호출을 합니다"
 | 
			
		||||
 | 
			
		||||
#: src/core/main.c:222
 | 
			
		||||
#: src/core/main.c:221
 | 
			
		||||
msgid "Run as a wayland compositor"
 | 
			
		||||
msgstr "웨일랜드 컴포지터로 실행합니다"
 | 
			
		||||
 | 
			
		||||
#: src/core/main.c:228
 | 
			
		||||
#: src/core/main.c:227
 | 
			
		||||
msgid "Run as a nested compositor"
 | 
			
		||||
msgstr "중첩 컴포지터로 실행합니다"
 | 
			
		||||
 | 
			
		||||
#: src/core/main.c:234
 | 
			
		||||
#: src/core/main.c:233
 | 
			
		||||
msgid "Run wayland compositor without starting Xwayland"
 | 
			
		||||
msgstr "웨일랜드 컴포지터를 X웨일랜드 시작없이 실행합니다"
 | 
			
		||||
 | 
			
		||||
#: src/core/main.c:242
 | 
			
		||||
#: src/core/main.c:241
 | 
			
		||||
msgid "Run as a full display server, rather than nested"
 | 
			
		||||
msgstr "전체 디스플레이 서버로 실행, 중첩 컴포지터가 아님"
 | 
			
		||||
 | 
			
		||||
#: src/core/main.c:248
 | 
			
		||||
#: src/core/main.c:247
 | 
			
		||||
msgid "Run with X11 backend"
 | 
			
		||||
msgstr "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” 창이 반응하지 않습니다."
 | 
			
		||||
 | 
			
		||||
#: src/core/meta-close-dialog-default.c:153
 | 
			
		||||
#: src/core/meta-close-dialog-default.c:152
 | 
			
		||||
msgid "Application is not responding."
 | 
			
		||||
msgstr "프로그램이 반응하지 않습니다."
 | 
			
		||||
 | 
			
		||||
#: 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."
 | 
			
		||||
msgstr "좀 더 기다리거나 해당 프로그램을 강제로 끝낼 수 있습니다."
 | 
			
		||||
 | 
			
		||||
#: src/core/meta-close-dialog-default.c:165
 | 
			
		||||
#: src/core/meta-close-dialog-default.c:164
 | 
			
		||||
msgid "_Force Quit"
 | 
			
		||||
msgstr "강제로 끝내기(_F)"
 | 
			
		||||
 | 
			
		||||
#: src/core/meta-close-dialog-default.c:165
 | 
			
		||||
#: src/core/meta-close-dialog-default.c:164
 | 
			
		||||
msgid "_Wait"
 | 
			
		||||
msgstr "기다리기(_W)"
 | 
			
		||||
 | 
			
		||||
@@ -693,21 +667,21 @@ msgstr "버전을 출력합니다"
 | 
			
		||||
msgid "Mutter plugin to use"
 | 
			
		||||
msgstr "사용할 머터 플러그인"
 | 
			
		||||
 | 
			
		||||
#: src/core/prefs.c:1849
 | 
			
		||||
#: src/core/prefs.c:1786
 | 
			
		||||
#, c-format
 | 
			
		||||
msgid "Workspace %d"
 | 
			
		||||
msgstr "작업 공간 %d"
 | 
			
		||||
 | 
			
		||||
#: src/core/util.c:122
 | 
			
		||||
#: src/core/util.c:121
 | 
			
		||||
msgid "Mutter was compiled without support for verbose mode\n"
 | 
			
		||||
msgstr "머터가 자세한 모드 지원 없이 컴파일 되었습니다\n"
 | 
			
		||||
 | 
			
		||||
#: src/wayland/meta-wayland-tablet-pad.c:568
 | 
			
		||||
#: src/wayland/meta-wayland-tablet-pad.c:567
 | 
			
		||||
#, c-format
 | 
			
		||||
msgid "Mode Switch: Mode %d"
 | 
			
		||||
msgstr "모드 전환: 모드 %d"
 | 
			
		||||
 | 
			
		||||
#: src/x11/meta-x11-display.c:679
 | 
			
		||||
#: src/x11/meta-x11-display.c:666
 | 
			
		||||
#, c-format
 | 
			
		||||
msgid ""
 | 
			
		||||
"Display “%s” already has a window manager; try using the --replace option to "
 | 
			
		||||
@@ -716,25 +690,20 @@ msgstr ""
 | 
			
		||||
"디스플레이  “%s”에 이미 창 관리자가 있습니다. 현재 창 관리자를 바꾸려면 --"
 | 
			
		||||
"replace 옵션을 써보십시오."
 | 
			
		||||
 | 
			
		||||
#: src/x11/meta-x11-display.c:1040
 | 
			
		||||
#: src/x11/meta-x11-display.c:1008
 | 
			
		||||
msgid "Failed to initialize GDK\n"
 | 
			
		||||
msgstr "GDK 초기화에 실패했습니다\n"
 | 
			
		||||
 | 
			
		||||
#: src/x11/meta-x11-display.c:1064
 | 
			
		||||
#: src/x11/meta-x11-display.c:1032
 | 
			
		||||
#, c-format
 | 
			
		||||
msgid "Failed to open X Window System display “%s”\n"
 | 
			
		||||
msgstr "X 윈도 시스템 디스플레이 “%s”을(를) 여는데 실패하였습니다\n"
 | 
			
		||||
 | 
			
		||||
#: src/x11/meta-x11-display.c:1147
 | 
			
		||||
#: src/x11/meta-x11-display.c:1115
 | 
			
		||||
#, c-format
 | 
			
		||||
msgid "Screen %d on display “%s” is invalid\n"
 | 
			
		||||
msgstr "디스플레이 “%2$s”의 화면 %1$d은(는) 잘못되었습니다\n"
 | 
			
		||||
 | 
			
		||||
#: src/x11/meta-x11-selection-input-stream.c:445
 | 
			
		||||
#, c-format
 | 
			
		||||
msgid "Format %s not supported"
 | 
			
		||||
msgstr "%s 형식은 지원하지 않습니다"
 | 
			
		||||
 | 
			
		||||
#: src/x11/session.c:1821
 | 
			
		||||
msgid ""
 | 
			
		||||
"These windows do not support “save current setup” and will have to be "
 | 
			
		||||
@@ -744,7 +713,7 @@ msgstr ""
 | 
			
		||||
"로 다시 시작해야 합니다."
 | 
			
		||||
 | 
			
		||||
# <창제목> (on <기계>)
 | 
			
		||||
#: src/x11/window-props.c:569
 | 
			
		||||
#: src/x11/window-props.c:568
 | 
			
		||||
#, c-format
 | 
			
		||||
msgid "%s (on %s)"
 | 
			
		||||
msgstr "%s (%s에서)"
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										100
									
								
								po/nl.po
									
									
									
									
									
								
							
							
						
						
									
										100
									
								
								po/nl.po
									
									
									
									
									
								
							@@ -10,8 +10,8 @@ msgid ""
 | 
			
		||||
msgstr ""
 | 
			
		||||
"Project-Id-Version: mutter\n"
 | 
			
		||||
"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/mutter/issues\n"
 | 
			
		||||
"POT-Creation-Date: 2019-09-20 12:33+0000\n"
 | 
			
		||||
"PO-Revision-Date: 2019-09-25 12:47+0200\n"
 | 
			
		||||
"POT-Creation-Date: 2019-06-13 16:48+0000\n"
 | 
			
		||||
"PO-Revision-Date: 2019-06-18 10:21+0200\n"
 | 
			
		||||
"Last-Translator: Nathan Follens <nthn@unseen.is>\n"
 | 
			
		||||
"Language-Team: Dutch <vertaling@vrijschrift.org>\n"
 | 
			
		||||
"Language: nl\n"
 | 
			
		||||
@@ -399,8 +399,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 ""
 | 
			
		||||
"Voeg het sleutelwoord van een experimentele functie toe aan de lijst om deze "
 | 
			
		||||
"in te schakelen. Of de compositor herstart moet worden vooraleer de functie "
 | 
			
		||||
@@ -413,31 +412,29 @@ msgstr ""
 | 
			
		||||
"plaats van vensterinhoud, om HiDPI-beeldschermen te beheren. Hiervoor is "
 | 
			
		||||
"opnieuw opstarten niet vereist. • “rt-scheduler” — zorgt ervoor dat mutter "
 | 
			
		||||
"real-time plannen met lage prioriteit aanvraagt. Het uitvoerbaar bestand of "
 | 
			
		||||
"de gebruiker moet CAP_SYS_NICE hebben. Hiervoor is opnieuw opstarten "
 | 
			
		||||
"vereist. • “autostart-xwayland” — initialiseert Xwayland op een luie manier "
 | 
			
		||||
"als er X11-cliënten zijn. Hiervoor is opnieuw opstarten vereist."
 | 
			
		||||
"de gebruiker moet CAP_SYS_NICE hebben. Hiervoor is opnieuw opstarten vereist."
 | 
			
		||||
 | 
			
		||||
#: 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 "Controletoets om de muispijl te lokaliseren"
 | 
			
		||||
 | 
			
		||||
#: 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 "Deze sleutel activeert de actie ‘muispijl lokaliseren’."
 | 
			
		||||
 | 
			
		||||
#: data/org.gnome.mutter.gschema.xml.in:155
 | 
			
		||||
#: data/org.gnome.mutter.gschema.xml.in:153
 | 
			
		||||
msgid "Select window from tab popup"
 | 
			
		||||
msgstr "Venster selecteren uit tab-pop-up"
 | 
			
		||||
 | 
			
		||||
#: data/org.gnome.mutter.gschema.xml.in:160
 | 
			
		||||
#: data/org.gnome.mutter.gschema.xml.in:158
 | 
			
		||||
msgid "Cancel tab popup"
 | 
			
		||||
msgstr "Tab-pop-up annuleren"
 | 
			
		||||
 | 
			
		||||
#: data/org.gnome.mutter.gschema.xml.in:165
 | 
			
		||||
#: data/org.gnome.mutter.gschema.xml.in:163
 | 
			
		||||
msgid "Switch monitor configurations"
 | 
			
		||||
msgstr "Tussen beeldschermconfiguraties schakelen"
 | 
			
		||||
 | 
			
		||||
#: data/org.gnome.mutter.gschema.xml.in:170
 | 
			
		||||
#: data/org.gnome.mutter.gschema.xml.in:168
 | 
			
		||||
msgid "Rotates the built-in monitor configuration"
 | 
			
		||||
msgstr "Roteert de ingebouwde beeldschermconfiguratie"
 | 
			
		||||
 | 
			
		||||
@@ -498,6 +495,13 @@ msgid "Allow X11 grabs to lock keyboard focus with Xwayland"
 | 
			
		||||
msgstr "X11-grabs toestaan om toetsenbordfocus met Xwayland te vergrendelen"
 | 
			
		||||
 | 
			
		||||
#: data/org.gnome.mutter.wayland.gschema.xml.in:65
 | 
			
		||||
#, fuzzy
 | 
			
		||||
#| msgid ""
 | 
			
		||||
#| "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”."
 | 
			
		||||
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 "
 | 
			
		||||
@@ -509,17 +513,11 @@ msgid ""
 | 
			
		||||
"specific X11 ClientMessage to the root window or be among the applications "
 | 
			
		||||
"white-listed in key “xwayland-grab-access-rules”."
 | 
			
		||||
msgstr ""
 | 
			
		||||
"Toestaan dat alle toetsgebeurtenissen met een grab doorverwezen worden naar "
 | 
			
		||||
"X11 ‘doorverwijzingsoverschrijfvensters’ wanneer ze in Xwayland draaien. "
 | 
			
		||||
"Deze optie dient ter ondersteuning van X11-cliënten (die geen "
 | 
			
		||||
"toetsenbordfocus verkrijgen) die een venster om doorverwijzingen te "
 | 
			
		||||
"overschrijven gebruiken en een toetsenbord-grab gebruiken om alle "
 | 
			
		||||
"toetsgebeurtenissen naar dat venster dwingen. Deze optie wordt zelden "
 | 
			
		||||
"gebruikt en heeft geen effect op gewone X11-vensters, die in normale "
 | 
			
		||||
"omstandigheden toetsenbordfocus kunnen verkrijgen. Om rekening te houden met "
 | 
			
		||||
"een X11-grab onder Wayland, moet de client ook: óf een specifieke X11-"
 | 
			
		||||
"ClientMessage naar het root-venster sturen, óf vermeld staan in de witte "
 | 
			
		||||
"lijst van toepassingen in de sleutel ‘xwayland-grab-access-rules’."
 | 
			
		||||
"Toestaan dat rekening wordt gehouden met toetsenbord-grabs door X11-"
 | 
			
		||||
"toepassingen die in Xwayland draaien. Om rekening te houden met een X11-grab "
 | 
			
		||||
"onder Wayland, moet de client ook: óf een specifieke X11-ClientMessage naar "
 | 
			
		||||
"het root-venster sturen, óf vermeld staan in de witte lijst van toepassingen "
 | 
			
		||||
"in de sleutel ‘xwayland-grab-access-rules’."
 | 
			
		||||
 | 
			
		||||
#: data/org.gnome.mutter.wayland.gschema.xml.in:84
 | 
			
		||||
msgid "Xwayland applications allowed to issue keyboard grabs"
 | 
			
		||||
@@ -552,7 +550,7 @@ msgstr ""
 | 
			
		||||
#. TRANSLATORS: This string refers to a button that switches between
 | 
			
		||||
#. * different modes.
 | 
			
		||||
#.
 | 
			
		||||
#: src/backends/meta-input-settings.c:2532
 | 
			
		||||
#: src/backends/meta-input-settings.c:2529
 | 
			
		||||
#, c-format
 | 
			
		||||
msgid "Mode Switch (Group %d)"
 | 
			
		||||
msgstr "Moduswisselaar (groep %d)"
 | 
			
		||||
@@ -560,34 +558,34 @@ msgstr "Moduswisselaar (groep %d)"
 | 
			
		||||
#. TRANSLATORS: This string refers to an action, cycles drawing tablets'
 | 
			
		||||
#. * mapping through the available outputs.
 | 
			
		||||
#.
 | 
			
		||||
#: src/backends/meta-input-settings.c:2555
 | 
			
		||||
#: src/backends/meta-input-settings.c:2552
 | 
			
		||||
msgid "Switch monitor"
 | 
			
		||||
msgstr "Van beeldscherm wisselen"
 | 
			
		||||
 | 
			
		||||
#: src/backends/meta-input-settings.c:2557
 | 
			
		||||
#: src/backends/meta-input-settings.c:2554
 | 
			
		||||
msgid "Show on-screen help"
 | 
			
		||||
msgstr "Hulptekst op scherm tonen"
 | 
			
		||||
 | 
			
		||||
#: src/backends/meta-monitor.c:223
 | 
			
		||||
#: src/backends/meta-monitor-manager.c:976
 | 
			
		||||
msgid "Built-in display"
 | 
			
		||||
msgstr "Ingebouwd beeldscherm"
 | 
			
		||||
 | 
			
		||||
#: src/backends/meta-monitor.c:252
 | 
			
		||||
#: src/backends/meta-monitor-manager.c:1008
 | 
			
		||||
msgid "Unknown"
 | 
			
		||||
msgstr "Onbekend"
 | 
			
		||||
 | 
			
		||||
#: src/backends/meta-monitor.c:254
 | 
			
		||||
#: src/backends/meta-monitor-manager.c:1010
 | 
			
		||||
msgid "Unknown Display"
 | 
			
		||||
msgstr "Onbekend beeldscherm"
 | 
			
		||||
 | 
			
		||||
#: 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 "
 | 
			
		||||
@@ -602,7 +600,7 @@ msgstr "Compositor"
 | 
			
		||||
 | 
			
		||||
#. 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:509
 | 
			
		||||
#: src/compositor/compositor.c:510
 | 
			
		||||
#, c-format
 | 
			
		||||
msgid ""
 | 
			
		||||
"Another compositing manager is already running on screen %i on display “%s”."
 | 
			
		||||
@@ -614,47 +612,47 @@ msgstr ""
 | 
			
		||||
msgid "Bell event"
 | 
			
		||||
msgstr "Bel-gebeurtenis"
 | 
			
		||||
 | 
			
		||||
#: src/core/main.c:186
 | 
			
		||||
#: src/core/main.c:185
 | 
			
		||||
msgid "Disable connection to session manager"
 | 
			
		||||
msgstr "Schakel de verbinding met het sessiebeheer uit"
 | 
			
		||||
 | 
			
		||||
#: src/core/main.c:192
 | 
			
		||||
#: src/core/main.c:191
 | 
			
		||||
msgid "Replace the running window manager"
 | 
			
		||||
msgstr "De huidige toepassing voor vensterbeheer vervangen"
 | 
			
		||||
 | 
			
		||||
#: src/core/main.c:198
 | 
			
		||||
#: src/core/main.c:197
 | 
			
		||||
msgid "Specify session management ID"
 | 
			
		||||
msgstr "Specificeer de ID van het sessiebeheer"
 | 
			
		||||
 | 
			
		||||
#: src/core/main.c:203
 | 
			
		||||
#: src/core/main.c:202
 | 
			
		||||
msgid "X Display to use"
 | 
			
		||||
msgstr "De te gebruiken X-weergave"
 | 
			
		||||
 | 
			
		||||
#: src/core/main.c:209
 | 
			
		||||
#: src/core/main.c:208
 | 
			
		||||
msgid "Initialize session from savefile"
 | 
			
		||||
msgstr "Initialiseer de sessie middels een opslagbestand"
 | 
			
		||||
 | 
			
		||||
#: src/core/main.c:215
 | 
			
		||||
#: src/core/main.c:214
 | 
			
		||||
msgid "Make X calls synchronous"
 | 
			
		||||
msgstr "X-aanroepen synchroon maken"
 | 
			
		||||
 | 
			
		||||
#: src/core/main.c:222
 | 
			
		||||
#: src/core/main.c:221
 | 
			
		||||
msgid "Run as a wayland compositor"
 | 
			
		||||
msgstr "Uitvoeren als een wayland compositor"
 | 
			
		||||
 | 
			
		||||
#: src/core/main.c:228
 | 
			
		||||
#: src/core/main.c:227
 | 
			
		||||
msgid "Run as a nested compositor"
 | 
			
		||||
msgstr "Uitvoeren als een geneste compositor"
 | 
			
		||||
 | 
			
		||||
#: src/core/main.c:234
 | 
			
		||||
#: src/core/main.c:233
 | 
			
		||||
msgid "Run wayland compositor without starting Xwayland"
 | 
			
		||||
msgstr "Wayland-compositor uitvoeren zonder Xwayland te starten"
 | 
			
		||||
 | 
			
		||||
#: src/core/main.c:242
 | 
			
		||||
#: src/core/main.c:241
 | 
			
		||||
msgid "Run as a full display server, rather than nested"
 | 
			
		||||
msgstr "Uitvoeren als een volledige displayserver, in plaats van genest"
 | 
			
		||||
 | 
			
		||||
#: src/core/main.c:248
 | 
			
		||||
#: src/core/main.c:247
 | 
			
		||||
msgid "Run with X11 backend"
 | 
			
		||||
msgstr "Uitvoeren met X11-backend"
 | 
			
		||||
 | 
			
		||||
@@ -707,21 +705,21 @@ msgstr "Versie-informatie tonen"
 | 
			
		||||
msgid "Mutter plugin to use"
 | 
			
		||||
msgstr "Te gebruiken Mutter-plug-in"
 | 
			
		||||
 | 
			
		||||
#: src/core/prefs.c:1849
 | 
			
		||||
#: src/core/prefs.c:1834
 | 
			
		||||
#, c-format
 | 
			
		||||
msgid "Workspace %d"
 | 
			
		||||
msgstr "Werkblad %d"
 | 
			
		||||
 | 
			
		||||
#: src/core/util.c:122
 | 
			
		||||
#: src/core/util.c:121
 | 
			
		||||
msgid "Mutter was compiled without support for verbose mode\n"
 | 
			
		||||
msgstr "Mutter is gecompileerd zonder ondersteuning voor verbose-mode\n"
 | 
			
		||||
 | 
			
		||||
#: src/wayland/meta-wayland-tablet-pad.c:568
 | 
			
		||||
#: src/wayland/meta-wayland-tablet-pad.c:567
 | 
			
		||||
#, c-format
 | 
			
		||||
msgid "Mode Switch: Mode %d"
 | 
			
		||||
msgstr "Moduswisselaar: modus %d"
 | 
			
		||||
 | 
			
		||||
#: src/x11/meta-x11-display.c:679
 | 
			
		||||
#: src/x11/meta-x11-display.c:681
 | 
			
		||||
#, c-format
 | 
			
		||||
msgid ""
 | 
			
		||||
"Display “%s” already has a window manager; try using the --replace option to "
 | 
			
		||||
@@ -730,16 +728,16 @@ msgstr ""
 | 
			
		||||
"Beeldscherm ‘%s’ heeft al een vensterbeheerder; probeer de optie: --replace "
 | 
			
		||||
"te gebruiken om de huidige vensterbeheerder te vervangen."
 | 
			
		||||
 | 
			
		||||
#: src/x11/meta-x11-display.c:1040
 | 
			
		||||
#: src/x11/meta-x11-display.c:1023
 | 
			
		||||
msgid "Failed to initialize GDK\n"
 | 
			
		||||
msgstr "Initialiseren van GDK mislukt\n"
 | 
			
		||||
 | 
			
		||||
#: src/x11/meta-x11-display.c:1064
 | 
			
		||||
#: src/x11/meta-x11-display.c:1047
 | 
			
		||||
#, c-format
 | 
			
		||||
msgid "Failed to open X Window System display “%s”\n"
 | 
			
		||||
msgstr "Openen van X Window System display ‘%s’ mislukt\n"
 | 
			
		||||
 | 
			
		||||
#: src/x11/meta-x11-display.c:1147
 | 
			
		||||
#: src/x11/meta-x11-display.c:1131
 | 
			
		||||
#, c-format
 | 
			
		||||
msgid "Screen %d on display “%s” is invalid\n"
 | 
			
		||||
msgstr "Scherm %d op beeldscherm ‘%s’ is ongeldig\n"
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										45
									
								
								po/pt_BR.po
									
									
									
									
									
								
							
							
						
						
									
										45
									
								
								po/pt_BR.po
									
									
									
									
									
								
							@@ -21,8 +21,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-05 02:32-0300\n"
 | 
			
		||||
"POT-Creation-Date: 2019-07-18 13:55+0000\n"
 | 
			
		||||
"PO-Revision-Date: 2019-07-22 01:40-0300\n"
 | 
			
		||||
"Last-Translator: Rafael Fontenelle <rafaelff@gnome.org>\n"
 | 
			
		||||
"Language-Team: Brazilian Portuguese <gnome-pt_br-list@gnome.org>\n"
 | 
			
		||||
"Language: pt_BR\n"
 | 
			
		||||
@@ -415,8 +415,6 @@ msgstr "Habilitar recursos experimentais"
 | 
			
		||||
#| "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."
 | 
			
		||||
msgid ""
 | 
			
		||||
"To enable experimental features, add the feature keyword to the list. "
 | 
			
		||||
@@ -428,8 +426,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 ""
 | 
			
		||||
"Para habilitar recursos experimentais, adicione a palavra-chave do recurso à "
 | 
			
		||||
"lista. Se o recurso exige ou não reiniciar o compositor, depende do recurso "
 | 
			
		||||
@@ -441,31 +438,29 @@ msgstr ""
 | 
			
		||||
"de monitor em vez de conteúdo de janela, para gerenciar monitores HiDPI. Não "
 | 
			
		||||
"exige uma reinicialização.  • “rt-scheduler” — faz o mutter solicitar um "
 | 
			
		||||
"agendamento de tempo real de baixa prioridade. O executável ou usuário deve "
 | 
			
		||||
"ter CAP_SYS_NICE. Exige uma reinicialização. • “autostart-xwayland” — "
 | 
			
		||||
"inicializa o Xwayland de forma relaxada, caso haja clientes X11. Exige uma "
 | 
			
		||||
"reinicialização."
 | 
			
		||||
"ter CAP_SYS_NICE. Exige uma reinicialização."
 | 
			
		||||
 | 
			
		||||
#: 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 "Modificador para usar ao localizar o ponteiro"
 | 
			
		||||
 | 
			
		||||
#: 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 "Essa chave vai iniciar a ação de “localizar ponteiro”."
 | 
			
		||||
 | 
			
		||||
#: data/org.gnome.mutter.gschema.xml.in:155
 | 
			
		||||
#: data/org.gnome.mutter.gschema.xml.in:153
 | 
			
		||||
msgid "Select window from tab popup"
 | 
			
		||||
msgstr "Selecione a janela a partir da aba instantânea"
 | 
			
		||||
 | 
			
		||||
#: data/org.gnome.mutter.gschema.xml.in:160
 | 
			
		||||
#: data/org.gnome.mutter.gschema.xml.in:158
 | 
			
		||||
msgid "Cancel tab popup"
 | 
			
		||||
msgstr "Cancelar aba instantânea"
 | 
			
		||||
 | 
			
		||||
#: data/org.gnome.mutter.gschema.xml.in:165
 | 
			
		||||
#: data/org.gnome.mutter.gschema.xml.in:163
 | 
			
		||||
msgid "Switch monitor configurations"
 | 
			
		||||
msgstr "Trocar configurações de monitor"
 | 
			
		||||
 | 
			
		||||
#: data/org.gnome.mutter.gschema.xml.in:170
 | 
			
		||||
#: data/org.gnome.mutter.gschema.xml.in:168
 | 
			
		||||
msgid "Rotates the built-in monitor configuration"
 | 
			
		||||
msgstr "Gira a configuração de monitor embutido"
 | 
			
		||||
 | 
			
		||||
@@ -522,10 +517,17 @@ msgid "Re-enable shortcuts"
 | 
			
		||||
msgstr "Reabilita atalhos"
 | 
			
		||||
 | 
			
		||||
#: data/org.gnome.mutter.wayland.gschema.xml.in:64
 | 
			
		||||
#| msgid "Allow grabs with Xwayland"
 | 
			
		||||
msgid "Allow X11 grabs to lock keyboard focus with Xwayland"
 | 
			
		||||
msgstr "Permitir as capturas do X11 travar o foco do teclado com Xwayland"
 | 
			
		||||
 | 
			
		||||
#: data/org.gnome.mutter.wayland.gschema.xml.in:65
 | 
			
		||||
#| msgid ""
 | 
			
		||||
#| "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”."
 | 
			
		||||
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 "
 | 
			
		||||
@@ -624,6 +626,7 @@ msgstr "%s %s"
 | 
			
		||||
 | 
			
		||||
#. Translators: this string will appear in Sysprof
 | 
			
		||||
#: src/backends/meta-profiler.c:82
 | 
			
		||||
#| msgid "Compositing Manager"
 | 
			
		||||
msgid "Compositor"
 | 
			
		||||
msgstr "Compositor"
 | 
			
		||||
 | 
			
		||||
@@ -633,9 +636,7 @@ msgstr "Compositor"
 | 
			
		||||
#, c-format
 | 
			
		||||
msgid ""
 | 
			
		||||
"Another compositing manager is already running on screen %i on display “%s”."
 | 
			
		||||
msgstr ""
 | 
			
		||||
"Outro gerenciador de composição de janelas está em execução na tela %i na "
 | 
			
		||||
"área “%s”."
 | 
			
		||||
msgstr "Outro gerenciador de composição de janelas está em execução na tela %i na área “%s”."
 | 
			
		||||
 | 
			
		||||
#: src/core/bell.c:192
 | 
			
		||||
msgid "Bell event"
 | 
			
		||||
@@ -749,7 +750,7 @@ msgstr "O Mutter foi compilado sem suporte para modo detalhado\n"
 | 
			
		||||
msgid "Mode Switch: Mode %d"
 | 
			
		||||
msgstr "Alternador de modo: Modo %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 "
 | 
			
		||||
@@ -758,16 +759,16 @@ msgstr ""
 | 
			
		||||
"A exibição “%s” já possui um gerenciador de janelas; tente usar a opção --"
 | 
			
		||||
"replace para substituir o gerenciador de janelas atual."
 | 
			
		||||
 | 
			
		||||
#: src/x11/meta-x11-display.c:1032
 | 
			
		||||
#: src/x11/meta-x11-display.c:1024
 | 
			
		||||
msgid "Failed to initialize GDK\n"
 | 
			
		||||
msgstr "Falha ao inicializar 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 "Falha ao abrir a exibição “%s” do sistema de janelas X\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 "A tela %d na exibição “%s” é inválida\n"
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										79
									
								
								po/sl.po
									
									
									
									
									
								
							
							
						
						
									
										79
									
								
								po/sl.po
									
									
									
									
									
								
							@@ -10,8 +10,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-09-26 09:57+0000\n"
 | 
			
		||||
"PO-Revision-Date: 2019-09-26 21:20+0200\n"
 | 
			
		||||
"POT-Creation-Date: 2019-08-24 16:57+0000\n"
 | 
			
		||||
"PO-Revision-Date: 2019-08-24 19:44+0200\n"
 | 
			
		||||
"Last-Translator: Matej Urbančič <mateju@svn.gnome.org>\n"
 | 
			
		||||
"Language-Team: Slovenian GNOME Translation Team <gnome-si@googlegroups.com>\n"
 | 
			
		||||
"Language: sl_SI\n"
 | 
			
		||||
@@ -387,6 +387,17 @@ msgid "Enable experimental features"
 | 
			
		||||
msgstr "Omogoči preizkusne možnosti"
 | 
			
		||||
 | 
			
		||||
#: data/org.gnome.mutter.gschema.xml.in:108
 | 
			
		||||
#, fuzzy
 | 
			
		||||
#| msgid ""
 | 
			
		||||
#| "To enable experimental features, add the feature keyword to the list. "
 | 
			
		||||
#| "Whether the feature requires restarting the compositor depends on the "
 | 
			
		||||
#| "given feature. Any experimental feature is not required to still be "
 | 
			
		||||
#| "available, or configurable. Don’t expect adding anything in this setting "
 | 
			
		||||
#| "to be future 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."
 | 
			
		||||
msgid ""
 | 
			
		||||
"To enable experimental features, add the feature keyword to the list. "
 | 
			
		||||
"Whether the feature requires restarting the compositor depends on the given "
 | 
			
		||||
@@ -402,16 +413,11 @@ msgid ""
 | 
			
		||||
msgstr ""
 | 
			
		||||
"Za omogočanje preizkusnih možnosti je treba dodati ključne besede na seznam "
 | 
			
		||||
"ključev. Ali vpisana možnost zahteva ponovni zagon sestavljalnika, je "
 | 
			
		||||
"odvisno od posamezne možnosti. Te možnosti niso zahtevane niti nastavljive, "
 | 
			
		||||
"najverjetneje niti ne bodo. Trenutno so na voljo ključne besede: • »scale-"
 | 
			
		||||
"monitor-framebuffer« – določi privzeto rabo sistema mutter za logične "
 | 
			
		||||
"zaslone v logičnem točkovnem koordinatnem prostoru, pri čemer prilagaja "
 | 
			
		||||
"predpomnilnik in ne vsebine za upravljanje z zasloni HiDPI. Možnost ne "
 | 
			
		||||
"zahteva ponovnega zagona.• “rt-scheduler” — postavi zahteve mutter na nižjo "
 | 
			
		||||
"prednostno raven. Izvršljivi program oziroma uporabnik mora imeti omogočeno "
 | 
			
		||||
"možnost CAP_SYS_NICE. Ta možnost zahteva ponovni zagon. • »autostart-"
 | 
			
		||||
"xwayland« - lenobno zažne okolje Xwayland, če ima odjemalce X11. Prav tako "
 | 
			
		||||
"zahteva ponoven zagon."
 | 
			
		||||
"odvisno od posamezne možnosti. Te možnosti niso zahtevane niti nastavljive. "
 | 
			
		||||
"Trenutno so na voljo ključne besede: • »scale-monitor-framebuffer« – določi "
 | 
			
		||||
"privzeto rabo sistema mutter za logične zaslone v logičnem točkovnem "
 | 
			
		||||
"koordinatnem prostoru, pri čemer prilagaja predpomnilnik in ne vsebine za "
 | 
			
		||||
"upravljanje z zasloni HiDPI. Možnost ne zahteva ponovnega zagona."
 | 
			
		||||
 | 
			
		||||
#: data/org.gnome.mutter.gschema.xml.in:134
 | 
			
		||||
msgid "Modifier to use to locate the pointer"
 | 
			
		||||
@@ -494,6 +500,13 @@ msgid "Allow X11 grabs to lock keyboard focus with Xwayland"
 | 
			
		||||
msgstr "Dovoli zajemanje za zaklep žariščenja tipkovnice z XWayland"
 | 
			
		||||
 | 
			
		||||
#: data/org.gnome.mutter.wayland.gschema.xml.in:65
 | 
			
		||||
#, fuzzy
 | 
			
		||||
#| msgid ""
 | 
			
		||||
#| "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”."
 | 
			
		||||
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 "
 | 
			
		||||
@@ -506,13 +519,9 @@ msgid ""
 | 
			
		||||
"white-listed in key “xwayland-grab-access-rules”."
 | 
			
		||||
msgstr ""
 | 
			
		||||
"Upošteva zajeme s tipkovnico, ki jih sprožijo programi X11, zagnani v okolju "
 | 
			
		||||
"Xwayland. možnost je namenjena podpori odjemalcem X11, ki preslikajo okno s "
 | 
			
		||||
"\"preglasitvijo preusmeritve\" (ne dobi žarišča tipkovnice) in vsili dogodke "
 | 
			
		||||
"tipkovnice v to okno. Možnost se uporablja redko ne vpliva na običajna okna "
 | 
			
		||||
"X11, ki lahko v običajnih okoliščinah pridobijo žarišča. Da bo zajem X11 "
 | 
			
		||||
"upoštevan v okolju Waylandu, mora odjemalec poslati tudi določeno sporočilo "
 | 
			
		||||
"odjemalcu X11 v korensko okno ali pa mora biti med mrogrami na belem seznamu "
 | 
			
		||||
"v ključu \"xwayland-grab-access-rules\"."
 | 
			
		||||
"Xwayland. Če naj se programski zajem upošteva, mora odjemalec ali poslati "
 | 
			
		||||
"specifično sporočilo X11 na korensko okno ali pa mora biti zaveden na "
 | 
			
		||||
"seznamu programov v ključu »xwayland-garb-access-rules«."
 | 
			
		||||
 | 
			
		||||
#: data/org.gnome.mutter.wayland.gschema.xml.in:84
 | 
			
		||||
msgid "Xwayland applications allowed to issue keyboard grabs"
 | 
			
		||||
@@ -544,7 +553,7 @@ msgstr ""
 | 
			
		||||
#. TRANSLATORS: This string refers to a button that switches between
 | 
			
		||||
#. * different modes.
 | 
			
		||||
#.
 | 
			
		||||
#: src/backends/meta-input-settings.c:2532
 | 
			
		||||
#: src/backends/meta-input-settings.c:2531
 | 
			
		||||
#, c-format
 | 
			
		||||
msgid "Mode Switch (Group %d)"
 | 
			
		||||
msgstr "Preklop načina (skupina %d)"
 | 
			
		||||
@@ -552,11 +561,11 @@ msgstr "Preklop načina (skupina %d)"
 | 
			
		||||
#. TRANSLATORS: This string refers to an action, cycles drawing tablets'
 | 
			
		||||
#. * mapping through the available outputs.
 | 
			
		||||
#.
 | 
			
		||||
#: src/backends/meta-input-settings.c:2555
 | 
			
		||||
#: src/backends/meta-input-settings.c:2554
 | 
			
		||||
msgid "Switch monitor"
 | 
			
		||||
msgstr "Nadzornik preklopa"
 | 
			
		||||
 | 
			
		||||
#: src/backends/meta-input-settings.c:2557
 | 
			
		||||
#: src/backends/meta-input-settings.c:2556
 | 
			
		||||
msgid "Show on-screen help"
 | 
			
		||||
msgstr "Pokaži zaslonsko pomoč"
 | 
			
		||||
 | 
			
		||||
@@ -594,7 +603,7 @@ msgstr "Sestavljalnik"
 | 
			
		||||
 | 
			
		||||
#. 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:509
 | 
			
		||||
#: src/compositor/compositor.c:508
 | 
			
		||||
#, c-format
 | 
			
		||||
msgid ""
 | 
			
		||||
"Another compositing manager is already running on screen %i on display “%s”."
 | 
			
		||||
@@ -605,47 +614,47 @@ msgstr ""
 | 
			
		||||
msgid "Bell event"
 | 
			
		||||
msgstr "Dogodek zvonjenja"
 | 
			
		||||
 | 
			
		||||
#: src/core/main.c:186
 | 
			
		||||
#: src/core/main.c:185
 | 
			
		||||
msgid "Disable connection to session manager"
 | 
			
		||||
msgstr "Onemogoči povezavo z upravljalnikom sej"
 | 
			
		||||
 | 
			
		||||
#: src/core/main.c:192
 | 
			
		||||
#: src/core/main.c:191
 | 
			
		||||
msgid "Replace the running window manager"
 | 
			
		||||
msgstr "Zamenjaj trenutni upravljalnik oken"
 | 
			
		||||
 | 
			
		||||
#: src/core/main.c:198
 | 
			
		||||
#: src/core/main.c:197
 | 
			
		||||
msgid "Specify session management ID"
 | 
			
		||||
msgstr "Navedite ID upravljanja seje"
 | 
			
		||||
 | 
			
		||||
#: src/core/main.c:203
 | 
			
		||||
#: src/core/main.c:202
 | 
			
		||||
msgid "X Display to use"
 | 
			
		||||
msgstr "Zaslon X za uporabo"
 | 
			
		||||
 | 
			
		||||
#: src/core/main.c:209
 | 
			
		||||
#: src/core/main.c:208
 | 
			
		||||
msgid "Initialize session from savefile"
 | 
			
		||||
msgstr "Začni sejo iz shranjene datoteke"
 | 
			
		||||
 | 
			
		||||
#: src/core/main.c:215
 | 
			
		||||
#: src/core/main.c:214
 | 
			
		||||
msgid "Make X calls synchronous"
 | 
			
		||||
msgstr "Uskladi klice X"
 | 
			
		||||
 | 
			
		||||
#: src/core/main.c:222
 | 
			
		||||
#: src/core/main.c:221
 | 
			
		||||
msgid "Run as a wayland compositor"
 | 
			
		||||
msgstr "Zaženi izbirnik wayland"
 | 
			
		||||
 | 
			
		||||
#: src/core/main.c:228
 | 
			
		||||
#: src/core/main.c:227
 | 
			
		||||
msgid "Run as a nested compositor"
 | 
			
		||||
msgstr "Zaženi kot gnezden vpisovalnik"
 | 
			
		||||
 | 
			
		||||
#: src/core/main.c:234
 | 
			
		||||
#: src/core/main.c:233
 | 
			
		||||
msgid "Run wayland compositor without starting Xwayland"
 | 
			
		||||
msgstr "Zaženi sestavljalnik wayland brez zagona okolja Xwayland"
 | 
			
		||||
 | 
			
		||||
#: src/core/main.c:242
 | 
			
		||||
#: src/core/main.c:241
 | 
			
		||||
msgid "Run as a full display server, rather than nested"
 | 
			
		||||
msgstr "Zaženi kot polni strežnik zaslona in ne vstavljeno"
 | 
			
		||||
 | 
			
		||||
#: src/core/main.c:248
 | 
			
		||||
#: src/core/main.c:247
 | 
			
		||||
msgid "Run with X11 backend"
 | 
			
		||||
msgstr "Zaženi z zaledjem X11"
 | 
			
		||||
 | 
			
		||||
@@ -703,7 +712,7 @@ msgstr "Vstavek Mutter za uporabo"
 | 
			
		||||
msgid "Workspace %d"
 | 
			
		||||
msgstr "Delovna površina %d"
 | 
			
		||||
 | 
			
		||||
#: src/core/util.c:122
 | 
			
		||||
#: src/core/util.c:121
 | 
			
		||||
msgid "Mutter was compiled without support for verbose mode\n"
 | 
			
		||||
msgstr ""
 | 
			
		||||
"Program Mutter je kodno preveden brez podpore za podrobni način izpisovanja\n"
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										152
									
								
								po/tr.po
									
									
									
									
									
								
							
							
						
						
									
										152
									
								
								po/tr.po
									
									
									
									
									
								
							@@ -14,8 +14,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-09-06 06:32+0000\n"
 | 
			
		||||
"PO-Revision-Date: 2019-09-07 23:07+0300\n"
 | 
			
		||||
"POT-Creation-Date: 2019-02-04 17:52+0000\n"
 | 
			
		||||
"PO-Revision-Date: 2019-02-09 23:14+0300\n"
 | 
			
		||||
"Last-Translator: Emin Tufan Çetin <etcetin@gmail.com>\n"
 | 
			
		||||
"Language-Team: Türkçe <gnome-turk@gnome.org>\n"
 | 
			
		||||
"Language: tr\n"
 | 
			
		||||
@@ -24,7 +24,7 @@ msgstr ""
 | 
			
		||||
"Content-Transfer-Encoding: 8bit\n"
 | 
			
		||||
"Plural-Forms: nplurals=1; plural=0;\n"
 | 
			
		||||
"X-DamnedLies-Scope: partial\n"
 | 
			
		||||
"X-Generator: Poedit 2.2.3\n"
 | 
			
		||||
"X-Generator: Gtranslator 3.30.1\n"
 | 
			
		||||
 | 
			
		||||
#: data/50-mutter-navigation.xml:6
 | 
			
		||||
msgid "Navigation"
 | 
			
		||||
@@ -404,10 +404,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 ""
 | 
			
		||||
"Deneysel özellikleri etkinleştirmek için özelliğin anahtar sözcüğünü listeye "
 | 
			
		||||
"ekleyin. Özelliğin yeniden başlatmayı gerektirip gerektirmeyeceği verilen "
 | 
			
		||||
@@ -418,33 +415,21 @@ msgstr ""
 | 
			
		||||
"mutter’in HiDPI monitörleri yönetmesi için pencere içeriği yerine monitör "
 | 
			
		||||
"çerçeve arabelleğini ölçeklendirirken, mantıksal monitörleri mantıksal "
 | 
			
		||||
"piksel koordinat aralığına yerleştirmesini öntanımlı yapar. Yeniden başlatma "
 | 
			
		||||
"gerektirmez. • “rt-scheduler” — mutter isteğini bir düşük öncelikli gerçek "
 | 
			
		||||
"zamanlı sıralandırma yapar. Çalıştırılabilir (executable) veya kullanıcı "
 | 
			
		||||
"CAP_SYS_NICE’ye sahip olmalıdır. Yeniden başlatma gerektirir. • “autostart-"
 | 
			
		||||
"xwayland” — eğer X11 istemcileri varsa Xwayland’i miskin miskin başlatır. "
 | 
			
		||||
"Yeniden başlatma gerektirir."
 | 
			
		||||
"gerektirmez."
 | 
			
		||||
 | 
			
		||||
#: data/org.gnome.mutter.gschema.xml.in:134
 | 
			
		||||
msgid "Modifier to use to locate the pointer"
 | 
			
		||||
msgstr "İşaretçiyi konumlamada kullanılacak değiştirici"
 | 
			
		||||
 | 
			
		||||
#: data/org.gnome.mutter.gschema.xml.in:135
 | 
			
		||||
msgid "This key will initiate the “locate pointer” action."
 | 
			
		||||
msgstr "Bu anahtar “işaretçiyi konumla” eylemini başlatacak."
 | 
			
		||||
 | 
			
		||||
#: data/org.gnome.mutter.gschema.xml.in:155
 | 
			
		||||
#: data/org.gnome.mutter.gschema.xml.in:141
 | 
			
		||||
msgid "Select window from tab popup"
 | 
			
		||||
msgstr "Pencereyi, sekme açılır penceresinden seç"
 | 
			
		||||
 | 
			
		||||
#: data/org.gnome.mutter.gschema.xml.in:160
 | 
			
		||||
#: data/org.gnome.mutter.gschema.xml.in:146
 | 
			
		||||
msgid "Cancel tab popup"
 | 
			
		||||
msgstr "Sekmeyi yeni pencerede açmayı iptal et"
 | 
			
		||||
 | 
			
		||||
#: data/org.gnome.mutter.gschema.xml.in:165
 | 
			
		||||
#: data/org.gnome.mutter.gschema.xml.in:151
 | 
			
		||||
msgid "Switch monitor configurations"
 | 
			
		||||
msgstr "Monitör yapılandırmaları arasında geçiş yap"
 | 
			
		||||
 | 
			
		||||
#: data/org.gnome.mutter.gschema.xml.in:170
 | 
			
		||||
#: data/org.gnome.mutter.gschema.xml.in:156
 | 
			
		||||
msgid "Rotates the built-in monitor configuration"
 | 
			
		||||
msgstr "Yerleşik monitör yapılandırmaları arasında geçiş yapar"
 | 
			
		||||
 | 
			
		||||
@@ -501,36 +486,28 @@ msgid "Re-enable shortcuts"
 | 
			
		||||
msgstr "Kısayolları yeniden etkinleştir"
 | 
			
		||||
 | 
			
		||||
#: data/org.gnome.mutter.wayland.gschema.xml.in:64
 | 
			
		||||
msgid "Allow X11 grabs to lock keyboard focus with Xwayland"
 | 
			
		||||
msgstr "X11 yakalamalarının Xwayland ile klavye odağı kilitlemesine izin ver"
 | 
			
		||||
msgid "Allow grabs with Xwayland"
 | 
			
		||||
msgstr "Xwayland ile yakalamalara izin ver"
 | 
			
		||||
 | 
			
		||||
#: 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 ""
 | 
			
		||||
"Xwayland içinde çalışırken tüm klavye etkinlikleri yakalamalı X11 “override "
 | 
			
		||||
"redirect” pencerelerine yönlendirilecek. Bu seçenek, “override redirect” "
 | 
			
		||||
"penceresi çizen (klavye odağı almayan) X11 istemcilerini desteklemek ve bu "
 | 
			
		||||
"istemcilerin tüm klavye etkinliklerini bu pencereye zorlayan klavye "
 | 
			
		||||
"yakalaması yayımlamasını sağlar. Bu seçenek nadiren kullanılır ve sıradan "
 | 
			
		||||
"koşullar altında klavye odağı alan sıradan X11 pencerelerinde etkisi yoktur. "
 | 
			
		||||
"Bir X11 yakalamasının Wayland altında hesaba katılması için istemci ya kök "
 | 
			
		||||
"pencereye belirli X11 ClientMessage’ı göndermeli ya da “xwayland-grab-access-"
 | 
			
		||||
"rules” anahtarındaki beyaz listeli uygulamalar arasında olmalıdır."
 | 
			
		||||
"XWayland’de çalışan X11 uygulamaları tarafından yapılacak klavye "
 | 
			
		||||
"yakalamalarına izin ver. X11 yakalamasının Wayland altında hesaba katılması "
 | 
			
		||||
"için istemci ya kök pencereye özel X11 ClientMessage’ı göndermeli ya da "
 | 
			
		||||
"“xwayland-grab-access-rules” anahtarında beyaz listeye alınmış uygulamalar "
 | 
			
		||||
"içinde yer almalıdır."
 | 
			
		||||
 | 
			
		||||
#: 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 "Klavye yakalamaları yapabilen Xwayland uygulamaları"
 | 
			
		||||
 | 
			
		||||
#: 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 "
 | 
			
		||||
@@ -557,7 +534,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 "Kip anahtarı (Küme %d)"
 | 
			
		||||
@@ -565,49 +542,46 @@ msgstr "Kip anahtarı (Küme %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 "Monitör değiştir"
 | 
			
		||||
 | 
			
		||||
#: src/backends/meta-input-settings.c:2556
 | 
			
		||||
#: src/backends/meta-input-settings.c:2448
 | 
			
		||||
msgid "Show on-screen help"
 | 
			
		||||
msgstr "Ekranda yardımı göster"
 | 
			
		||||
 | 
			
		||||
#: src/backends/meta-monitor.c:223
 | 
			
		||||
#: src/backends/meta-monitor-manager.c:954
 | 
			
		||||
msgid "Built-in display"
 | 
			
		||||
msgstr "Yerleşik ekran"
 | 
			
		||||
 | 
			
		||||
#: src/backends/meta-monitor.c:252
 | 
			
		||||
#: src/backends/meta-monitor-manager.c:986
 | 
			
		||||
msgid "Unknown"
 | 
			
		||||
msgstr "Bilinmiyor"
 | 
			
		||||
 | 
			
		||||
#: src/backends/meta-monitor.c:254
 | 
			
		||||
#: src/backends/meta-monitor-manager.c:988
 | 
			
		||||
msgid "Unknown Display"
 | 
			
		||||
msgstr "Bilinmeyen Ekran"
 | 
			
		||||
 | 
			
		||||
#: src/backends/meta-monitor.c:262
 | 
			
		||||
#: src/backends/meta-monitor-manager.c:996
 | 
			
		||||
#, c-format
 | 
			
		||||
#| msgid "%s %s"
 | 
			
		||||
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
 | 
			
		||||
#| msgid "%s %s"
 | 
			
		||||
msgctxt ""
 | 
			
		||||
"This is a monitor vendor name followed by product/model name where size in "
 | 
			
		||||
"inches could not be calculated, e.g. Dell U2414H"
 | 
			
		||||
msgid "%s %s"
 | 
			
		||||
msgstr "%s %s"
 | 
			
		||||
 | 
			
		||||
#. Translators: this string will appear in Sysprof
 | 
			
		||||
#: src/backends/meta-profiler.c:82
 | 
			
		||||
msgid "Compositor"
 | 
			
		||||
msgstr "Dizgici"
 | 
			
		||||
 | 
			
		||||
#. 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:509
 | 
			
		||||
#: src/compositor/compositor.c:482
 | 
			
		||||
#, c-format
 | 
			
		||||
msgid ""
 | 
			
		||||
"Another compositing manager is already running on screen %i on display “%s”."
 | 
			
		||||
@@ -615,65 +589,65 @@ msgstr ""
 | 
			
		||||
"“%2$s” monitöründeki %1$i ekranında zaten başka bir birleştirme yöneticisi "
 | 
			
		||||
"çalışıyor."
 | 
			
		||||
 | 
			
		||||
#: src/core/bell.c:192
 | 
			
		||||
#: src/core/bell.c:252
 | 
			
		||||
msgid "Bell event"
 | 
			
		||||
msgstr "Etkinlik zili"
 | 
			
		||||
 | 
			
		||||
#: src/core/main.c:186
 | 
			
		||||
#: src/core/main.c:185
 | 
			
		||||
msgid "Disable connection to session manager"
 | 
			
		||||
msgstr "Ortam yöneticisine olan bağlantıyı kapat"
 | 
			
		||||
 | 
			
		||||
#: src/core/main.c:192
 | 
			
		||||
#: src/core/main.c:191
 | 
			
		||||
msgid "Replace the running window manager"
 | 
			
		||||
msgstr "Çalışan pencere yöneticisinin yerini al"
 | 
			
		||||
 | 
			
		||||
#: src/core/main.c:198
 | 
			
		||||
#: src/core/main.c:197
 | 
			
		||||
msgid "Specify session management ID"
 | 
			
		||||
msgstr "Ortam yönetim ID’sini belirt"
 | 
			
		||||
 | 
			
		||||
#: src/core/main.c:203
 | 
			
		||||
#: src/core/main.c:202
 | 
			
		||||
msgid "X Display to use"
 | 
			
		||||
msgstr "Kullanılacak X Ekranı"
 | 
			
		||||
 | 
			
		||||
#: src/core/main.c:209
 | 
			
		||||
#: src/core/main.c:208
 | 
			
		||||
msgid "Initialize session from savefile"
 | 
			
		||||
msgstr "Ortamı kayıtlı dosyadan başlat"
 | 
			
		||||
 | 
			
		||||
#: src/core/main.c:215
 | 
			
		||||
#: src/core/main.c:214
 | 
			
		||||
msgid "Make X calls synchronous"
 | 
			
		||||
msgstr "X çağrılarını eşzamanlı yap"
 | 
			
		||||
 | 
			
		||||
#: src/core/main.c:222
 | 
			
		||||
#: src/core/main.c:221
 | 
			
		||||
msgid "Run as a wayland compositor"
 | 
			
		||||
msgstr "Wayland dizgici olarak çalıştır"
 | 
			
		||||
 | 
			
		||||
#: src/core/main.c:228
 | 
			
		||||
#: src/core/main.c:227
 | 
			
		||||
msgid "Run as a nested compositor"
 | 
			
		||||
msgstr "Yuvalanmış dizgici olarak çalıştır"
 | 
			
		||||
 | 
			
		||||
#: src/core/main.c:234
 | 
			
		||||
#: src/core/main.c:233
 | 
			
		||||
msgid "Run wayland compositor without starting Xwayland"
 | 
			
		||||
msgstr "Xwayland’i çalıştırmadan Wayland dizgici çalıştır"
 | 
			
		||||
 | 
			
		||||
#: src/core/main.c:242
 | 
			
		||||
#: src/core/main.c:241
 | 
			
		||||
msgid "Run as a full display server, rather than nested"
 | 
			
		||||
msgstr "İç içe değil tam ekran sunucusu olarak çalıştır"
 | 
			
		||||
 | 
			
		||||
#: src/core/main.c:248
 | 
			
		||||
#: src/core/main.c:247
 | 
			
		||||
msgid "Run with X11 backend"
 | 
			
		||||
msgstr "X11 arkayüzüyle çalıştır"
 | 
			
		||||
 | 
			
		||||
#. 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” yanıt vermiyor."
 | 
			
		||||
 | 
			
		||||
#: src/core/meta-close-dialog-default.c:153
 | 
			
		||||
#: src/core/meta-close-dialog-default.c:152
 | 
			
		||||
msgid "Application is not responding."
 | 
			
		||||
msgstr "Uygulama yanıt vermiyor."
 | 
			
		||||
 | 
			
		||||
#: 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."
 | 
			
		||||
@@ -681,11 +655,11 @@ msgstr ""
 | 
			
		||||
"Uygulamanın devam etmesi için bir süre beklemeyi seçebilir veya tümüyle "
 | 
			
		||||
"çıkması için zorlayabilirsiniz."
 | 
			
		||||
 | 
			
		||||
#: src/core/meta-close-dialog-default.c:165
 | 
			
		||||
#: src/core/meta-close-dialog-default.c:164
 | 
			
		||||
msgid "_Force Quit"
 | 
			
		||||
msgstr "_Zorla Çık"
 | 
			
		||||
 | 
			
		||||
#: src/core/meta-close-dialog-default.c:165
 | 
			
		||||
#: src/core/meta-close-dialog-default.c:164
 | 
			
		||||
msgid "_Wait"
 | 
			
		||||
msgstr "_Bekle"
 | 
			
		||||
 | 
			
		||||
@@ -712,21 +686,21 @@ msgstr "Sürümü yazdır"
 | 
			
		||||
msgid "Mutter plugin to use"
 | 
			
		||||
msgstr "Kullanılacak Mutter eklentisi"
 | 
			
		||||
 | 
			
		||||
#: src/core/prefs.c:1849
 | 
			
		||||
#: src/core/prefs.c:1786
 | 
			
		||||
#, c-format
 | 
			
		||||
msgid "Workspace %d"
 | 
			
		||||
msgstr "Çalışma Alanı %d"
 | 
			
		||||
 | 
			
		||||
#: src/core/util.c:122
 | 
			
		||||
#: src/core/util.c:121
 | 
			
		||||
msgid "Mutter was compiled without support for verbose mode\n"
 | 
			
		||||
msgstr "Mutter, ayrıntılı kip desteği olmadan derlenmiş\n"
 | 
			
		||||
 | 
			
		||||
#: src/wayland/meta-wayland-tablet-pad.c:568
 | 
			
		||||
#: src/wayland/meta-wayland-tablet-pad.c:567
 | 
			
		||||
#, c-format
 | 
			
		||||
msgid "Mode Switch: Mode %d"
 | 
			
		||||
msgstr "Kip Anahtarı: Kip %d"
 | 
			
		||||
 | 
			
		||||
#: src/x11/meta-x11-display.c:679
 | 
			
		||||
#: src/x11/meta-x11-display.c:666
 | 
			
		||||
#, c-format
 | 
			
		||||
msgid ""
 | 
			
		||||
"Display “%s” already has a window manager; try using the --replace option to "
 | 
			
		||||
@@ -736,25 +710,20 @@ msgstr ""
 | 
			
		||||
"yöneticisinin yerine bir başkasını koymak için --replace seçeneğini "
 | 
			
		||||
"kullanmayı deneyin."
 | 
			
		||||
 | 
			
		||||
#: src/x11/meta-x11-display.c:1040
 | 
			
		||||
#: src/x11/meta-x11-display.c:1008
 | 
			
		||||
msgid "Failed to initialize GDK\n"
 | 
			
		||||
msgstr "GDK ilklendirilemedi\n"
 | 
			
		||||
 | 
			
		||||
#: src/x11/meta-x11-display.c:1064
 | 
			
		||||
#: src/x11/meta-x11-display.c:1032
 | 
			
		||||
#, c-format
 | 
			
		||||
msgid "Failed to open X Window System display “%s”\n"
 | 
			
		||||
msgstr "X Pencere Sistemi “%s” ekranı açılamadı\n"
 | 
			
		||||
 | 
			
		||||
#: src/x11/meta-x11-display.c:1147
 | 
			
		||||
#: src/x11/meta-x11-display.c:1115
 | 
			
		||||
#, c-format
 | 
			
		||||
msgid "Screen %d on display “%s” is invalid\n"
 | 
			
		||||
msgstr "“%2$s” monitöründeki %1$d ekranı geçersiz\n"
 | 
			
		||||
 | 
			
		||||
#: src/x11/meta-x11-selection-input-stream.c:445
 | 
			
		||||
#, c-format
 | 
			
		||||
msgid "Format %s not supported"
 | 
			
		||||
msgstr "%s biçimi desteklenmiyor"
 | 
			
		||||
 | 
			
		||||
#: src/x11/session.c:1821
 | 
			
		||||
msgid ""
 | 
			
		||||
"These windows do not support “save current setup” and will have to be "
 | 
			
		||||
@@ -763,7 +732,7 @@ msgstr ""
 | 
			
		||||
"Bu pencereler, “geçerli ayarları kaydet” özelliğini desteklemiyor ve bir "
 | 
			
		||||
"dahaki girişinizde elle yeniden başlatılmak zorundadır."
 | 
			
		||||
 | 
			
		||||
#: src/x11/window-props.c:569
 | 
			
		||||
#: src/x11/window-props.c:568
 | 
			
		||||
#, c-format
 | 
			
		||||
msgid "%s (on %s)"
 | 
			
		||||
msgstr "%s (%s üzerinde)"
 | 
			
		||||
@@ -2013,6 +1982,9 @@ msgstr "%s (%s üzerinde)"
 | 
			
		||||
#~ msgid "Commands to run in response to keybindings"
 | 
			
		||||
#~ msgstr "Tuş bağlarına yanıt olarak çalıştırılacak komutlar"
 | 
			
		||||
 | 
			
		||||
#~ msgid "Compositing Manager"
 | 
			
		||||
#~ msgstr "Kompozisyon Yöneticisi"
 | 
			
		||||
 | 
			
		||||
#~ msgid "Control how new windows get focus"
 | 
			
		||||
#~ msgstr "Yeni pencerelerin nasıl odaklanacağının kontrolü"
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -49,14 +49,6 @@
 | 
			
		||||
#define DEFAULT_XKB_RULES_FILE "evdev"
 | 
			
		||||
#define DEFAULT_XKB_MODEL "pc105+inet"
 | 
			
		||||
 | 
			
		||||
typedef enum
 | 
			
		||||
{
 | 
			
		||||
  META_SEQUENCE_NONE,
 | 
			
		||||
  META_SEQUENCE_ACCEPTED,
 | 
			
		||||
  META_SEQUENCE_REJECTED,
 | 
			
		||||
  META_SEQUENCE_PENDING_END
 | 
			
		||||
} MetaSequenceState;
 | 
			
		||||
 | 
			
		||||
struct _MetaBackendClass
 | 
			
		||||
{
 | 
			
		||||
  GObjectClass parent_class;
 | 
			
		||||
@@ -79,10 +71,6 @@ struct _MetaBackendClass
 | 
			
		||||
                              int          device_id,
 | 
			
		||||
                              uint32_t     timestamp);
 | 
			
		||||
 | 
			
		||||
  void (* finish_touch_sequence) (MetaBackend          *backend,
 | 
			
		||||
                                  ClutterEventSequence *sequence,
 | 
			
		||||
                                  MetaSequenceState     state);
 | 
			
		||||
 | 
			
		||||
  void (* warp_pointer) (MetaBackend *backend,
 | 
			
		||||
                         int          x,
 | 
			
		||||
                         int          y);
 | 
			
		||||
@@ -147,10 +135,6 @@ gboolean meta_backend_ungrab_device (MetaBackend *backend,
 | 
			
		||||
                                     int          device_id,
 | 
			
		||||
                                     uint32_t     timestamp);
 | 
			
		||||
 | 
			
		||||
void meta_backend_finish_touch_sequence (MetaBackend          *backend,
 | 
			
		||||
                                         ClutterEventSequence *sequence,
 | 
			
		||||
                                         MetaSequenceState     state);
 | 
			
		||||
 | 
			
		||||
void meta_backend_warp_pointer (MetaBackend *backend,
 | 
			
		||||
                                int          x,
 | 
			
		||||
                                int          y);
 | 
			
		||||
 
 | 
			
		||||
@@ -1059,20 +1059,6 @@ meta_backend_ungrab_device (MetaBackend *backend,
 | 
			
		||||
  return META_BACKEND_GET_CLASS (backend)->ungrab_device (backend, device_id, timestamp);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * meta_backend_finish_touch_sequence: (skip)
 | 
			
		||||
 */
 | 
			
		||||
void
 | 
			
		||||
meta_backend_finish_touch_sequence (MetaBackend          *backend,
 | 
			
		||||
                                    ClutterEventSequence *sequence,
 | 
			
		||||
                                    MetaSequenceState     state)
 | 
			
		||||
{
 | 
			
		||||
  if (META_BACKEND_GET_CLASS (backend)->finish_touch_sequence)
 | 
			
		||||
    META_BACKEND_GET_CLASS (backend)->finish_touch_sequence (backend,
 | 
			
		||||
                                                             sequence,
 | 
			
		||||
                                                             state);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * meta_backend_warp_pointer: (skip)
 | 
			
		||||
 */
 | 
			
		||||
 
 | 
			
		||||
@@ -31,7 +31,6 @@ struct _MetaCursorTracker {
 | 
			
		||||
  GObject parent_instance;
 | 
			
		||||
 | 
			
		||||
  gboolean is_showing;
 | 
			
		||||
  gboolean keep_focus_while_hidden;
 | 
			
		||||
 | 
			
		||||
  MetaCursorSprite *effective_cursor; /* May be NULL when hidden */
 | 
			
		||||
  MetaCursorSprite *displayed_cursor;
 | 
			
		||||
 
 | 
			
		||||
@@ -136,7 +136,6 @@ static void
 | 
			
		||||
meta_cursor_tracker_init (MetaCursorTracker *self)
 | 
			
		||||
{
 | 
			
		||||
  self->is_showing = TRUE;
 | 
			
		||||
  self->keep_focus_while_hidden = FALSE;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static void
 | 
			
		||||
@@ -458,44 +457,6 @@ meta_cursor_tracker_set_pointer_visible (MetaCursorTracker *tracker,
 | 
			
		||||
  g_signal_emit (tracker, signals[VISIBILITY_CHANGED], 0);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * meta_cursor_tracker_get_keep_focus_while_hidden:
 | 
			
		||||
 * @tracker: a #MetaCursorTracker object.
 | 
			
		||||
 *
 | 
			
		||||
 * Returns: %FALSE if the Wayland focus surface of the pointer will
 | 
			
		||||
 * be forced to NULL while the pointer is hidden, %TRUE otherwise.
 | 
			
		||||
 * This function is only meant to be used by the magnifier of the shell
 | 
			
		||||
 * and will be removed in a future release.
 | 
			
		||||
 */
 | 
			
		||||
gboolean
 | 
			
		||||
meta_cursor_tracker_get_keep_focus_while_hidden (MetaCursorTracker *tracker)
 | 
			
		||||
{
 | 
			
		||||
  return tracker->keep_focus_while_hidden;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * meta_cursor_tracker_set_keep_focus_while_hidden:
 | 
			
		||||
 * @tracker: a #MetaCursorTracker object.
 | 
			
		||||
 * @keep_focus: whether to keep the cursor focus while hidden
 | 
			
		||||
 *
 | 
			
		||||
 * If this is set to %TRUE, the Wayland focus surface of the pointer will
 | 
			
		||||
 * not be forced to NULL while the pointer is hidden.
 | 
			
		||||
 * This function is only meant to be used by the magnifier of the shell
 | 
			
		||||
 * and will be removed in a future release.
 | 
			
		||||
 */
 | 
			
		||||
void
 | 
			
		||||
meta_cursor_tracker_set_keep_focus_while_hidden (MetaCursorTracker *tracker,
 | 
			
		||||
                                                 gboolean           keep_focus)
 | 
			
		||||
{
 | 
			
		||||
  if (keep_focus == tracker->keep_focus_while_hidden)
 | 
			
		||||
    return;
 | 
			
		||||
  tracker->keep_focus_while_hidden = keep_focus;
 | 
			
		||||
 | 
			
		||||
  sync_cursor (tracker);
 | 
			
		||||
 | 
			
		||||
  g_signal_emit (tracker, signals[VISIBILITY_CHANGED], 0);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
MetaCursorSprite *
 | 
			
		||||
meta_cursor_tracker_get_displayed_cursor (MetaCursorTracker *tracker)
 | 
			
		||||
{
 | 
			
		||||
 
 | 
			
		||||
@@ -214,8 +214,6 @@ meta_dbus_session_watcher_finalize (GObject *object)
 | 
			
		||||
  MetaDbusSessionWatcher *session_watcher = META_DBUS_SESSION_WATCHER (object);
 | 
			
		||||
 | 
			
		||||
  g_hash_table_destroy (session_watcher->clients);
 | 
			
		||||
 | 
			
		||||
  G_OBJECT_CLASS (meta_dbus_session_watcher_parent_class)->finalize (object);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static void
 | 
			
		||||
 
 | 
			
		||||
@@ -54,6 +54,7 @@ struct _MetaIdleMonitorClass
 | 
			
		||||
  GObjectClass parent_class;
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
void _meta_idle_monitor_watch_fire (MetaIdleMonitorWatch *watch);
 | 
			
		||||
void meta_idle_monitor_reset_idletime (MetaIdleMonitor *monitor);
 | 
			
		||||
 | 
			
		||||
#endif /* META_IDLE_MONITOR_PRIVATE_H */
 | 
			
		||||
 
 | 
			
		||||
@@ -54,8 +54,8 @@ static GParamSpec *obj_props[PROP_LAST];
 | 
			
		||||
 | 
			
		||||
G_DEFINE_TYPE (MetaIdleMonitor, meta_idle_monitor, G_TYPE_OBJECT)
 | 
			
		||||
 | 
			
		||||
static void
 | 
			
		||||
meta_idle_monitor_watch_fire (MetaIdleMonitorWatch *watch)
 | 
			
		||||
void
 | 
			
		||||
_meta_idle_monitor_watch_fire (MetaIdleMonitorWatch *watch)
 | 
			
		||||
{
 | 
			
		||||
  MetaIdleMonitor *monitor;
 | 
			
		||||
  guint id;
 | 
			
		||||
@@ -207,8 +207,6 @@ update_inhibited (MetaIdleMonitor *monitor,
 | 
			
		||||
  if (inhibited == monitor->inhibited)
 | 
			
		||||
    return;
 | 
			
		||||
 | 
			
		||||
  monitor->inhibited = inhibited;
 | 
			
		||||
 | 
			
		||||
  g_hash_table_foreach (monitor->watches,
 | 
			
		||||
                        update_inhibited_watch,
 | 
			
		||||
                        monitor);
 | 
			
		||||
@@ -326,10 +324,9 @@ idle_monitor_dispatch_timeout (GSource     *source,
 | 
			
		||||
  if (ready_time > now)
 | 
			
		||||
    return G_SOURCE_CONTINUE;
 | 
			
		||||
 | 
			
		||||
  _meta_idle_monitor_watch_fire (watch);
 | 
			
		||||
  g_source_set_ready_time (watch->timeout_source, -1);
 | 
			
		||||
 | 
			
		||||
  meta_idle_monitor_watch_fire (watch);
 | 
			
		||||
 | 
			
		||||
  return G_SOURCE_CONTINUE;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@@ -514,20 +511,13 @@ meta_idle_monitor_reset_idletime (MetaIdleMonitor *monitor)
 | 
			
		||||
 | 
			
		||||
      if (watch->timeout_msec == 0)
 | 
			
		||||
        {
 | 
			
		||||
          meta_idle_monitor_watch_fire (watch);
 | 
			
		||||
          _meta_idle_monitor_watch_fire ((MetaIdleMonitorWatch *) watch);
 | 
			
		||||
        }
 | 
			
		||||
      else
 | 
			
		||||
        {
 | 
			
		||||
          if (monitor->inhibited)
 | 
			
		||||
            {
 | 
			
		||||
              g_source_set_ready_time (watch->timeout_source, -1);
 | 
			
		||||
            }
 | 
			
		||||
          else
 | 
			
		||||
            {
 | 
			
		||||
              g_source_set_ready_time (watch->timeout_source,
 | 
			
		||||
                                       monitor->last_event_time +
 | 
			
		||||
                                       watch->timeout_msec * 1000);
 | 
			
		||||
            }
 | 
			
		||||
          g_source_set_ready_time (watch->timeout_source,
 | 
			
		||||
                                   monitor->last_event_time +
 | 
			
		||||
                                   watch->timeout_msec * 1000);
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -1437,8 +1437,7 @@ lookup_tool_settings (ClutterInputDeviceTool *tool,
 | 
			
		||||
    }
 | 
			
		||||
  else
 | 
			
		||||
    {
 | 
			
		||||
      path = g_strdup_printf ("/org/gnome/desktop/peripherals/stylus/%" G_GINT64_MODIFIER "x/",
 | 
			
		||||
                              serial);
 | 
			
		||||
      path = g_strdup_printf ("/org/gnome/desktop/peripherals/stylus/%lx/", serial);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
  tool_settings =
 | 
			
		||||
 
 | 
			
		||||
@@ -1648,7 +1648,6 @@ create_monitor_config_from_variant (MetaMonitorManager *manager,
 | 
			
		||||
  MetaMonitorModeSpec *monitor_mode_spec;
 | 
			
		||||
  g_autoptr (GVariant) properties_variant = NULL;
 | 
			
		||||
  gboolean enable_underscanning = FALSE;
 | 
			
		||||
  gboolean set_underscanning = FALSE;
 | 
			
		||||
 | 
			
		||||
  g_variant_get (monitor_config_variant, "(ss@a{sv})",
 | 
			
		||||
                 &connector,
 | 
			
		||||
@@ -1671,18 +1670,7 @@ create_monitor_config_from_variant (MetaMonitorManager *manager,
 | 
			
		||||
      return NULL;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
  set_underscanning =
 | 
			
		||||
    g_variant_lookup (properties_variant, "underscanning", "b",
 | 
			
		||||
                      &enable_underscanning);
 | 
			
		||||
  if (set_underscanning)
 | 
			
		||||
    {
 | 
			
		||||
      if (enable_underscanning && !meta_monitor_supports_underscanning (monitor))
 | 
			
		||||
        {
 | 
			
		||||
          g_set_error (error, G_IO_ERROR, G_IO_ERROR_FAILED,
 | 
			
		||||
                       "Underscanning requested but unsupported");
 | 
			
		||||
          return NULL;
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
  g_variant_lookup (properties_variant, "underscanning", "b", &enable_underscanning);
 | 
			
		||||
 | 
			
		||||
  monitor_spec = meta_monitor_spec_clone (meta_monitor_get_spec (monitor));
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -226,15 +226,11 @@ meta_screen_cast_window_stream_initable_init (GInitable     *initable,
 | 
			
		||||
                              G_CALLBACK (on_window_unmanaged),
 | 
			
		||||
                              window_stream);
 | 
			
		||||
 | 
			
		||||
  if (meta_is_stage_views_scaled ())
 | 
			
		||||
    scale = (int) ceilf (meta_logical_monitor_get_scale (logical_monitor));
 | 
			
		||||
  else
 | 
			
		||||
    scale = 1;
 | 
			
		||||
 | 
			
		||||
  /* We cannot set the stream size to the exact size of the window, because
 | 
			
		||||
   * windows can be resized, whereas streams cannot.
 | 
			
		||||
   * So we set a size equals to the size of the logical monitor for the window.
 | 
			
		||||
   */
 | 
			
		||||
  scale = (int) ceil (meta_logical_monitor_get_scale (logical_monitor));
 | 
			
		||||
  window_stream->logical_width = logical_monitor->rect.width;
 | 
			
		||||
  window_stream->logical_height = logical_monitor->rect.height;
 | 
			
		||||
  window_stream->stream_width = logical_monitor->rect.width * scale;
 | 
			
		||||
 
 | 
			
		||||
@@ -583,6 +583,7 @@ on_udev_device_added (MetaUdev          *udev,
 | 
			
		||||
    {
 | 
			
		||||
      g_warning ("Failed to hotplug secondary gpu '%s': %s",
 | 
			
		||||
                 device_path, error->message);
 | 
			
		||||
      g_error_free (error);
 | 
			
		||||
      return;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
@@ -820,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)");
 | 
			
		||||
@@ -839,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);
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -322,7 +322,6 @@ update_monitor_crtc_cursor (MetaMonitor         *monitor,
 | 
			
		||||
                                   &crtc_x, &crtc_y);
 | 
			
		||||
 | 
			
		||||
  transform = meta_logical_monitor_get_transform (data->in_logical_monitor);
 | 
			
		||||
  transform = meta_monitor_logical_to_crtc_transform (monitor, transform);
 | 
			
		||||
  if (meta_monitor_transform_is_rotated (transform))
 | 
			
		||||
    {
 | 
			
		||||
      crtc_width = monitor_crtc_mode->crtc_mode->height;
 | 
			
		||||
 
 | 
			
		||||
@@ -62,7 +62,7 @@ meta_keymap_native_get_num_lock_state (ClutterKeymap *keymap)
 | 
			
		||||
 | 
			
		||||
  return xkb_state_mod_name_is_active (xkb_state,
 | 
			
		||||
                                       XKB_MOD_NAME_NUM,
 | 
			
		||||
                                       XKB_STATE_MODS_LATCHED |
 | 
			
		||||
                                       XKB_STATE_MODS_LATCHED ||
 | 
			
		||||
                                       XKB_STATE_MODS_LOCKED);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@@ -78,7 +78,7 @@ meta_keymap_native_get_caps_lock_state (ClutterKeymap *keymap)
 | 
			
		||||
 | 
			
		||||
  return xkb_state_mod_name_is_active (xkb_state,
 | 
			
		||||
                                       XKB_MOD_NAME_CAPS,
 | 
			
		||||
                                       XKB_STATE_MODS_LATCHED |
 | 
			
		||||
                                       XKB_STATE_MODS_LATCHED ||
 | 
			
		||||
                                       XKB_STATE_MODS_LOCKED);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -25,9 +25,6 @@
 | 
			
		||||
void meta_kms_connector_update_state (MetaKmsConnector *connector,
 | 
			
		||||
                                      drmModeRes       *drm_resources);
 | 
			
		||||
 | 
			
		||||
void meta_kms_connector_predict_state (MetaKmsConnector *connector,
 | 
			
		||||
                                       MetaKmsUpdate    *update);
 | 
			
		||||
 | 
			
		||||
MetaKmsConnector * meta_kms_connector_new (MetaKmsImplDevice *impl_device,
 | 
			
		||||
                                           drmModeConnector  *drm_connector,
 | 
			
		||||
                                           drmModeRes        *drm_resources);
 | 
			
		||||
 
 | 
			
		||||
@@ -24,7 +24,6 @@
 | 
			
		||||
 | 
			
		||||
#include <errno.h>
 | 
			
		||||
 | 
			
		||||
#include "backends/native/meta-kms-crtc.h"
 | 
			
		||||
#include "backends/native/meta-kms-device-private.h"
 | 
			
		||||
#include "backends/native/meta-kms-impl-device.h"
 | 
			
		||||
#include "backends/native/meta-kms-update-private.h"
 | 
			
		||||
@@ -496,35 +495,6 @@ meta_kms_connector_update_state (MetaKmsConnector *connector,
 | 
			
		||||
    drmModeFreeConnector (drm_connector);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void
 | 
			
		||||
meta_kms_connector_predict_state (MetaKmsConnector *connector,
 | 
			
		||||
                                  MetaKmsUpdate    *update)
 | 
			
		||||
{
 | 
			
		||||
  GList *mode_sets;
 | 
			
		||||
  GList *l;
 | 
			
		||||
 | 
			
		||||
  if (!connector->current_state)
 | 
			
		||||
    return;
 | 
			
		||||
 | 
			
		||||
  mode_sets = meta_kms_update_get_mode_sets (update);
 | 
			
		||||
  for (l = mode_sets; l; l = l->next)
 | 
			
		||||
    {
 | 
			
		||||
      MetaKmsModeSet *mode_set = l->data;
 | 
			
		||||
      MetaKmsCrtc *crtc;
 | 
			
		||||
 | 
			
		||||
      if (!g_list_find (mode_set->connectors, connector))
 | 
			
		||||
        continue;
 | 
			
		||||
 | 
			
		||||
      crtc = mode_set->crtc;
 | 
			
		||||
      if (crtc)
 | 
			
		||||
        connector->current_state->current_crtc_id = meta_kms_crtc_get_id (crtc);
 | 
			
		||||
      else
 | 
			
		||||
        connector->current_state->current_crtc_id = 0;
 | 
			
		||||
 | 
			
		||||
      break;
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static void
 | 
			
		||||
find_property_ids (MetaKmsConnector  *connector,
 | 
			
		||||
                   MetaKmsImplDevice *impl_device,
 | 
			
		||||
 
 | 
			
		||||
@@ -30,7 +30,4 @@ MetaKmsCrtc * meta_kms_crtc_new (MetaKmsImplDevice *impl_device,
 | 
			
		||||
 | 
			
		||||
void meta_kms_crtc_update_state (MetaKmsCrtc *crtc);
 | 
			
		||||
 | 
			
		||||
void meta_kms_crtc_predict_state (MetaKmsCrtc   *crtc,
 | 
			
		||||
                                  MetaKmsUpdate *update);
 | 
			
		||||
 | 
			
		||||
#endif /* META_KMS_CRTC_PRIVATE_H */
 | 
			
		||||
 
 | 
			
		||||
@@ -143,105 +143,6 @@ meta_kms_crtc_update_state (MetaKmsCrtc *crtc)
 | 
			
		||||
  drmModeFreeCrtc (drm_crtc);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static void
 | 
			
		||||
clear_gamma_state (MetaKmsCrtc *crtc)
 | 
			
		||||
{
 | 
			
		||||
  crtc->current_state.gamma.size = 0;
 | 
			
		||||
  g_clear_pointer (&crtc->current_state.gamma.red, g_free);
 | 
			
		||||
  g_clear_pointer (&crtc->current_state.gamma.green, g_free);
 | 
			
		||||
  g_clear_pointer (&crtc->current_state.gamma.blue, g_free);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void
 | 
			
		||||
meta_kms_crtc_predict_state (MetaKmsCrtc   *crtc,
 | 
			
		||||
                             MetaKmsUpdate *update)
 | 
			
		||||
{
 | 
			
		||||
  gboolean is_gamma_valid;
 | 
			
		||||
  GList *mode_sets;
 | 
			
		||||
  GList *crtc_gammas;
 | 
			
		||||
  GList *l;
 | 
			
		||||
 | 
			
		||||
  is_gamma_valid = TRUE;
 | 
			
		||||
 | 
			
		||||
  mode_sets = meta_kms_update_get_mode_sets (update);
 | 
			
		||||
  for (l = mode_sets; l; l = l->next)
 | 
			
		||||
    {
 | 
			
		||||
      MetaKmsModeSet *mode_set = l->data;
 | 
			
		||||
 | 
			
		||||
      if (mode_set->crtc != crtc)
 | 
			
		||||
        continue;
 | 
			
		||||
 | 
			
		||||
      if (mode_set->drm_mode)
 | 
			
		||||
        {
 | 
			
		||||
          MetaKmsPlaneAssignment *plane_assignment;
 | 
			
		||||
 | 
			
		||||
          plane_assignment =
 | 
			
		||||
            meta_kms_update_get_primary_plane_assignment (update, crtc);
 | 
			
		||||
 | 
			
		||||
          crtc->current_state.rect =
 | 
			
		||||
            meta_fixed_16_rectangle_to_rectangle (plane_assignment->src_rect);
 | 
			
		||||
          crtc->current_state.is_drm_mode_valid = TRUE;
 | 
			
		||||
          crtc->current_state.drm_mode = *mode_set->drm_mode;
 | 
			
		||||
        }
 | 
			
		||||
      else
 | 
			
		||||
        {
 | 
			
		||||
          crtc->current_state.rect = (MetaRectangle) { 0 };
 | 
			
		||||
          crtc->current_state.is_drm_mode_valid = FALSE;
 | 
			
		||||
          crtc->current_state.drm_mode = (drmModeModeInfo) { 0 };
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
      is_gamma_valid = FALSE;
 | 
			
		||||
 | 
			
		||||
      break;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
  crtc_gammas = meta_kms_update_get_crtc_gammas (update);
 | 
			
		||||
  for (l = crtc_gammas; l; l = l->next)
 | 
			
		||||
    {
 | 
			
		||||
      MetaKmsCrtcGamma *gamma = l->data;
 | 
			
		||||
 | 
			
		||||
      if (gamma->crtc != crtc)
 | 
			
		||||
        continue;
 | 
			
		||||
 | 
			
		||||
      crtc->current_state.gamma.size = gamma->size;
 | 
			
		||||
      crtc->current_state.gamma.red =
 | 
			
		||||
        g_memdup (gamma->red, gamma->size * sizeof (uint16_t));
 | 
			
		||||
      crtc->current_state.gamma.green =
 | 
			
		||||
        g_memdup (gamma->green, gamma->size * sizeof (uint16_t));
 | 
			
		||||
      crtc->current_state.gamma.blue =
 | 
			
		||||
        g_memdup (gamma->blue, gamma->size * sizeof (uint16_t));
 | 
			
		||||
 | 
			
		||||
      is_gamma_valid = TRUE;
 | 
			
		||||
      break;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
  if (!is_gamma_valid)
 | 
			
		||||
    {
 | 
			
		||||
      if (crtc->current_state.is_drm_mode_valid)
 | 
			
		||||
        {
 | 
			
		||||
          MetaKmsImplDevice *impl_device;
 | 
			
		||||
          drmModeCrtc *drm_crtc;
 | 
			
		||||
 | 
			
		||||
          impl_device = meta_kms_device_get_impl_device (crtc->device);
 | 
			
		||||
          drm_crtc = drmModeGetCrtc (meta_kms_impl_device_get_fd (impl_device),
 | 
			
		||||
                                     crtc->id);
 | 
			
		||||
          if (drm_crtc)
 | 
			
		||||
            {
 | 
			
		||||
              read_gamma_state (crtc, impl_device, drm_crtc);
 | 
			
		||||
              drmModeFreeCrtc (drm_crtc);
 | 
			
		||||
            }
 | 
			
		||||
          else
 | 
			
		||||
            {
 | 
			
		||||
              clear_gamma_state (crtc);
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
      else
 | 
			
		||||
        {
 | 
			
		||||
          clear_gamma_state (crtc);
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
MetaKmsCrtc *
 | 
			
		||||
meta_kms_crtc_new (MetaKmsImplDevice *impl_device,
 | 
			
		||||
                   drmModeCrtc       *drm_crtc,
 | 
			
		||||
@@ -262,7 +163,9 @@ meta_kms_crtc_finalize (GObject *object)
 | 
			
		||||
{
 | 
			
		||||
  MetaKmsCrtc *crtc = META_KMS_CRTC (object);
 | 
			
		||||
 | 
			
		||||
  clear_gamma_state (crtc);
 | 
			
		||||
  g_clear_pointer (&crtc->current_state.gamma.red, g_free);
 | 
			
		||||
  g_clear_pointer (&crtc->current_state.gamma.green, g_free);
 | 
			
		||||
  g_clear_pointer (&crtc->current_state.gamma.blue, g_free);
 | 
			
		||||
 | 
			
		||||
  G_OBJECT_CLASS (meta_kms_crtc_parent_class)->finalize (object);
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -24,9 +24,7 @@
 | 
			
		||||
 | 
			
		||||
MetaKmsImplDevice * meta_kms_device_get_impl_device (MetaKmsDevice *device);
 | 
			
		||||
 | 
			
		||||
void meta_kms_device_update_states_in_impl (MetaKmsDevice *device);
 | 
			
		||||
 | 
			
		||||
void meta_kms_device_predict_states_in_impl (MetaKmsDevice *device,
 | 
			
		||||
                                             MetaKmsUpdate *update);
 | 
			
		||||
void meta_kms_device_update_states_in_impl (MetaKmsDevice            *device,
 | 
			
		||||
                                            MetaKmsUpdateStatesFlags  flags);
 | 
			
		||||
 | 
			
		||||
#endif /* META_KMS_DEVICE_PRIVATE_H */
 | 
			
		||||
 
 | 
			
		||||
@@ -1,6 +1,5 @@
 | 
			
		||||
/*
 | 
			
		||||
 * Copyright (C) 2019 Red Hat
 | 
			
		||||
 * Copyright (C) 2019 DisplayLink (UK) Ltd.
 | 
			
		||||
 *
 | 
			
		||||
 * This program is free software; you can redistribute it and/or
 | 
			
		||||
 * modify it under the terms of the GNU General Public License as
 | 
			
		||||
@@ -110,34 +109,28 @@ meta_kms_device_get_primary_plane_for (MetaKmsDevice *device,
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void
 | 
			
		||||
meta_kms_device_update_states_in_impl (MetaKmsDevice *device)
 | 
			
		||||
{
 | 
			
		||||
  MetaKmsImplDevice *impl_device = meta_kms_device_get_impl_device (device);
 | 
			
		||||
 | 
			
		||||
  meta_assert_in_kms_impl (device->kms);
 | 
			
		||||
  meta_assert_is_waiting_for_kms_impl_task (device->kms);
 | 
			
		||||
 | 
			
		||||
  meta_kms_impl_device_update_states (impl_device);
 | 
			
		||||
 | 
			
		||||
  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);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void
 | 
			
		||||
meta_kms_device_predict_states_in_impl (MetaKmsDevice *device,
 | 
			
		||||
                                        MetaKmsUpdate *update)
 | 
			
		||||
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_predict_states (impl_device, update);
 | 
			
		||||
  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
 | 
			
		||||
@@ -150,28 +143,12 @@ dispatch_in_impl (MetaKmsImpl  *impl,
 | 
			
		||||
  return meta_kms_impl_device_dispatch (impl_device, error);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static gboolean
 | 
			
		||||
dispatch_idle_in_impl (MetaKmsImpl  *impl,
 | 
			
		||||
                       gpointer      user_data,
 | 
			
		||||
                       GError      **error)
 | 
			
		||||
{
 | 
			
		||||
  meta_kms_impl_dispatch_idle (impl);
 | 
			
		||||
 | 
			
		||||
  return TRUE;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
int
 | 
			
		||||
meta_kms_device_dispatch_sync (MetaKmsDevice  *device,
 | 
			
		||||
                               GError        **error)
 | 
			
		||||
{
 | 
			
		||||
  int callback_count;
 | 
			
		||||
 | 
			
		||||
  if (!meta_kms_run_impl_task_sync (device->kms,
 | 
			
		||||
                                    dispatch_idle_in_impl,
 | 
			
		||||
                                    device->impl_device,
 | 
			
		||||
                                    error))
 | 
			
		||||
    return -1;
 | 
			
		||||
 | 
			
		||||
  callback_count = meta_kms_flush_callbacks (device->kms);
 | 
			
		||||
  if (callback_count > 0)
 | 
			
		||||
    return TRUE;
 | 
			
		||||
@@ -234,7 +211,6 @@ meta_kms_device_new (MetaKms            *kms,
 | 
			
		||||
    return NULL;
 | 
			
		||||
 | 
			
		||||
  device = g_object_new (META_TYPE_KMS_DEVICE, NULL);
 | 
			
		||||
  device->kms = kms;
 | 
			
		||||
 | 
			
		||||
  data = (CreateImplDeviceData) {
 | 
			
		||||
    .device = device,
 | 
			
		||||
@@ -248,6 +224,7 @@ meta_kms_device_new (MetaKms            *kms,
 | 
			
		||||
      return NULL;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
  device->kms = kms;
 | 
			
		||||
  device->impl_device = data.out_impl_device;
 | 
			
		||||
  device->flags = flags;
 | 
			
		||||
  device->path = g_strdup (path);
 | 
			
		||||
@@ -289,31 +266,27 @@ meta_kms_device_finalize (GObject *object)
 | 
			
		||||
  MetaBackend *backend = meta_kms_get_backend (device->kms);
 | 
			
		||||
  MetaBackendNative *backend_native = META_BACKEND_NATIVE (backend);
 | 
			
		||||
  MetaLauncher *launcher = meta_backend_native_get_launcher (backend_native);
 | 
			
		||||
  FreeImplDeviceData data;
 | 
			
		||||
  GError *error = NULL;
 | 
			
		||||
 | 
			
		||||
  g_free (device->path);
 | 
			
		||||
  g_list_free (device->crtcs);
 | 
			
		||||
  g_list_free (device->connectors);
 | 
			
		||||
  g_list_free (device->planes);
 | 
			
		||||
 | 
			
		||||
  if (device->impl_device)
 | 
			
		||||
  data = (FreeImplDeviceData) {
 | 
			
		||||
    .impl_device = device->impl_device,
 | 
			
		||||
  };
 | 
			
		||||
  if (!meta_kms_run_impl_task_sync (device->kms, free_impl_device_in_impl, &data,
 | 
			
		||||
                                   &error))
 | 
			
		||||
    {
 | 
			
		||||
      FreeImplDeviceData data;
 | 
			
		||||
      GError *error = NULL;
 | 
			
		||||
 | 
			
		||||
      data = (FreeImplDeviceData) {
 | 
			
		||||
        .impl_device = device->impl_device,
 | 
			
		||||
      };
 | 
			
		||||
      if (!meta_kms_run_impl_task_sync (device->kms, free_impl_device_in_impl, &data,
 | 
			
		||||
                                       &error))
 | 
			
		||||
        {
 | 
			
		||||
          g_warning ("Failed to close KMS impl device: %s", error->message);
 | 
			
		||||
          g_error_free (error);
 | 
			
		||||
        }
 | 
			
		||||
      else
 | 
			
		||||
        {
 | 
			
		||||
          meta_launcher_close_restricted (launcher, data.out_fd);
 | 
			
		||||
        }
 | 
			
		||||
      g_warning ("Failed to close KMS impl device: %s", error->message);
 | 
			
		||||
      g_error_free (error);
 | 
			
		||||
    }
 | 
			
		||||
  else
 | 
			
		||||
    {
 | 
			
		||||
      meta_launcher_close_restricted (launcher, data.out_fd);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
  G_OBJECT_CLASS (meta_kms_device_parent_class)->finalize (object);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -266,8 +266,7 @@ get_plane_type (MetaKmsImplDevice       *impl_device,
 | 
			
		||||
    case DRM_PLANE_TYPE_OVERLAY:
 | 
			
		||||
      return META_KMS_PLANE_TYPE_OVERLAY;
 | 
			
		||||
    default:
 | 
			
		||||
      g_warning ("Unhandled plane type %" G_GUINT64_FORMAT,
 | 
			
		||||
                 props->prop_values[idx]);
 | 
			
		||||
      g_warning ("Unhandled plane type %lu", props->prop_values[idx]);
 | 
			
		||||
      return -1;
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
@@ -319,7 +318,8 @@ 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;
 | 
			
		||||
 | 
			
		||||
@@ -327,7 +327,8 @@ meta_kms_impl_device_update_states (MetaKmsImplDevice *impl_device)
 | 
			
		||||
 | 
			
		||||
  drm_resources = drmModeGetResources (impl_device->fd);
 | 
			
		||||
 | 
			
		||||
  update_connectors (impl_device, drm_resources);
 | 
			
		||||
  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);
 | 
			
		||||
@@ -336,16 +337,6 @@ meta_kms_impl_device_update_states (MetaKmsImplDevice *impl_device)
 | 
			
		||||
  drmModeFreeResources (drm_resources);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void
 | 
			
		||||
meta_kms_impl_device_predict_states (MetaKmsImplDevice *impl_device,
 | 
			
		||||
                                     MetaKmsUpdate     *update)
 | 
			
		||||
{
 | 
			
		||||
  g_list_foreach (impl_device->crtcs, (GFunc) meta_kms_crtc_predict_state,
 | 
			
		||||
                  update);
 | 
			
		||||
  g_list_foreach (impl_device->connectors, (GFunc) meta_kms_connector_predict_state,
 | 
			
		||||
                  update);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
MetaKmsImplDevice *
 | 
			
		||||
meta_kms_impl_device_new (MetaKmsDevice  *device,
 | 
			
		||||
                          MetaKmsImpl    *impl,
 | 
			
		||||
 
 | 
			
		||||
@@ -53,10 +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_predict_states (MetaKmsImplDevice *impl_device,
 | 
			
		||||
                                          MetaKmsUpdate     *update);
 | 
			
		||||
void meta_kms_impl_device_update_states (MetaKmsImplDevice        *impl_device,
 | 
			
		||||
                                         MetaKmsUpdateStatesFlags  flags);
 | 
			
		||||
 | 
			
		||||
int meta_kms_impl_device_close (MetaKmsImplDevice *impl_device);
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -1,6 +1,5 @@
 | 
			
		||||
/*
 | 
			
		||||
 * Copyright (C) 2018-2019 Red Hat
 | 
			
		||||
 * Copyright (C) 2019 DisplayLink (UK) Ltd.
 | 
			
		||||
 *
 | 
			
		||||
 * This program is free software; you can redistribute it and/or
 | 
			
		||||
 * modify it under the terms of the GNU General Public License as
 | 
			
		||||
@@ -135,6 +134,24 @@ process_plane_property (MetaKmsImpl      *impl,
 | 
			
		||||
  return TRUE;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static MetaKmsPlaneAssignment *
 | 
			
		||||
get_primary_plane_assignment (MetaKmsImpl   *impl,
 | 
			
		||||
                              MetaKmsUpdate *update,
 | 
			
		||||
                              MetaKmsCrtc   *crtc)
 | 
			
		||||
{
 | 
			
		||||
  GList *l;
 | 
			
		||||
 | 
			
		||||
  for (l = meta_kms_update_get_plane_assignments (update); l; l = l->next)
 | 
			
		||||
    {
 | 
			
		||||
      MetaKmsPlaneAssignment *plane_assignment = l->data;
 | 
			
		||||
 | 
			
		||||
      if (plane_assignment->crtc == crtc)
 | 
			
		||||
        return plane_assignment;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
  return NULL;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static CachedModeSet *
 | 
			
		||||
cached_mode_set_new (GList                 *connectors,
 | 
			
		||||
                     const drmModeModeInfo *drm_mode)
 | 
			
		||||
@@ -205,8 +222,7 @@ process_mode_set (MetaKmsImpl     *impl,
 | 
			
		||||
                                &connectors,
 | 
			
		||||
                                &n_connectors);
 | 
			
		||||
 | 
			
		||||
      plane_assignment = meta_kms_update_get_primary_plane_assignment (update,
 | 
			
		||||
                                                                       crtc);
 | 
			
		||||
      plane_assignment = get_primary_plane_assignment (impl, update, crtc);
 | 
			
		||||
      if (!plane_assignment)
 | 
			
		||||
        {
 | 
			
		||||
          g_set_error (error, G_IO_ERROR, G_IO_ERROR_FAILED,
 | 
			
		||||
@@ -519,7 +535,7 @@ mode_set_fallback_feedback_idle (gpointer user_data)
 | 
			
		||||
  g_clear_pointer (&impl_simple->mode_set_fallback_feedback_source,
 | 
			
		||||
                   g_source_unref);
 | 
			
		||||
 | 
			
		||||
  if (impl_simple->pending_page_flip_retries)
 | 
			
		||||
  if (!impl_simple->pending_page_flip_retries)
 | 
			
		||||
    {
 | 
			
		||||
      impl_simple->postponed_mode_set_fallback_datas =
 | 
			
		||||
        g_steal_pointer (&impl_simple->mode_set_fallback_page_flip_datas);
 | 
			
		||||
@@ -616,8 +632,7 @@ process_page_flip (MetaKmsImpl      *impl,
 | 
			
		||||
  int ret;
 | 
			
		||||
 | 
			
		||||
  crtc = page_flip->crtc;
 | 
			
		||||
  plane_assignment = meta_kms_update_get_primary_plane_assignment (update,
 | 
			
		||||
                                                                   crtc);
 | 
			
		||||
  plane_assignment = get_primary_plane_assignment (impl, update, crtc);
 | 
			
		||||
 | 
			
		||||
  page_flip_data = meta_kms_page_flip_data_new (impl,
 | 
			
		||||
                                                crtc,
 | 
			
		||||
@@ -773,14 +788,12 @@ meta_kms_impl_simple_handle_page_flip_callback (MetaKmsImpl         *impl,
 | 
			
		||||
    {
 | 
			
		||||
      impl_simple->postponed_page_flip_datas =
 | 
			
		||||
        g_list_append (impl_simple->postponed_page_flip_datas,
 | 
			
		||||
                       meta_kms_page_flip_data_ref (page_flip_data));
 | 
			
		||||
                       page_flip_data);
 | 
			
		||||
    }
 | 
			
		||||
  else
 | 
			
		||||
    {
 | 
			
		||||
      meta_kms_page_flip_data_flipped_in_impl (page_flip_data);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
  meta_kms_page_flip_data_unref (page_flip_data);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static void
 | 
			
		||||
@@ -807,15 +820,6 @@ meta_kms_impl_simple_discard_pending_page_flips (MetaKmsImpl *impl)
 | 
			
		||||
                   g_source_destroy);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static void
 | 
			
		||||
meta_kms_impl_simple_dispatch_idle (MetaKmsImpl *impl)
 | 
			
		||||
{
 | 
			
		||||
  MetaKmsImplSimple *impl_simple = META_KMS_IMPL_SIMPLE (impl);
 | 
			
		||||
 | 
			
		||||
  if (impl_simple->mode_set_fallback_feedback_source)
 | 
			
		||||
    mode_set_fallback_feedback_idle (impl_simple);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static void
 | 
			
		||||
meta_kms_impl_simple_finalize (GObject *object)
 | 
			
		||||
{
 | 
			
		||||
@@ -855,5 +859,4 @@ meta_kms_impl_simple_class_init (MetaKmsImplSimpleClass *klass)
 | 
			
		||||
  impl_class->process_update = meta_kms_impl_simple_process_update;
 | 
			
		||||
  impl_class->handle_page_flip_callback = meta_kms_impl_simple_handle_page_flip_callback;
 | 
			
		||||
  impl_class->discard_pending_page_flips = meta_kms_impl_simple_discard_pending_page_flips;
 | 
			
		||||
  impl_class->dispatch_idle = meta_kms_impl_simple_dispatch_idle;
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -1,6 +1,5 @@
 | 
			
		||||
/*
 | 
			
		||||
 * Copyright (C) 2018 Red Hat
 | 
			
		||||
 * Copyright (C) 2019 DisplayLink (UK) Ltd.
 | 
			
		||||
 *
 | 
			
		||||
 * This program is free software; you can redistribute it and/or
 | 
			
		||||
 * modify it under the terms of the GNU General Public License as
 | 
			
		||||
@@ -66,12 +65,6 @@ meta_kms_impl_discard_pending_page_flips (MetaKmsImpl *impl)
 | 
			
		||||
  META_KMS_IMPL_GET_CLASS (impl)->discard_pending_page_flips (impl);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void
 | 
			
		||||
meta_kms_impl_dispatch_idle (MetaKmsImpl *impl)
 | 
			
		||||
{
 | 
			
		||||
  META_KMS_IMPL_GET_CLASS (impl)->dispatch_idle (impl);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static void
 | 
			
		||||
meta_kms_impl_set_property (GObject      *object,
 | 
			
		||||
                            guint         prop_id,
 | 
			
		||||
 
 | 
			
		||||
@@ -1,6 +1,5 @@
 | 
			
		||||
/*
 | 
			
		||||
 * Copyright (C) 2018 Red Hat
 | 
			
		||||
 * Copyright (C) 2019 DisplayLink (UK) Ltd.
 | 
			
		||||
 *
 | 
			
		||||
 * This program is free software; you can redistribute it and/or
 | 
			
		||||
 * modify it under the terms of the GNU General Public License as
 | 
			
		||||
@@ -39,7 +38,6 @@ struct _MetaKmsImplClass
 | 
			
		||||
  void (* handle_page_flip_callback) (MetaKmsImpl         *impl,
 | 
			
		||||
                                      MetaKmsPageFlipData *page_flip_data);
 | 
			
		||||
  void (* discard_pending_page_flips) (MetaKmsImpl *impl);
 | 
			
		||||
  void (* dispatch_idle) (MetaKmsImpl *impl);
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
MetaKms * meta_kms_impl_get_kms (MetaKmsImpl *impl);
 | 
			
		||||
@@ -53,6 +51,4 @@ void meta_kms_impl_handle_page_flip_callback (MetaKmsImpl         *impl,
 | 
			
		||||
 | 
			
		||||
void meta_kms_impl_discard_pending_page_flips (MetaKmsImpl *impl);
 | 
			
		||||
 | 
			
		||||
void meta_kms_impl_dispatch_idle (MetaKmsImpl *impl);
 | 
			
		||||
 | 
			
		||||
#endif /* META_KMS_IMPL_H */
 | 
			
		||||
 
 | 
			
		||||
@@ -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 */
 | 
			
		||||
 
 | 
			
		||||
@@ -97,9 +97,6 @@ void meta_kms_plane_assignment_set_plane_property (MetaKmsPlaneAssignment *plane
 | 
			
		||||
                                                   uint32_t                prop_id,
 | 
			
		||||
                                                   uint64_t                value);
 | 
			
		||||
 | 
			
		||||
MetaKmsPlaneAssignment * meta_kms_update_get_primary_plane_assignment (MetaKmsUpdate *update,
 | 
			
		||||
                                                                       MetaKmsCrtc   *crtc);
 | 
			
		||||
 | 
			
		||||
GList * meta_kms_update_get_plane_assignments (MetaKmsUpdate *update);
 | 
			
		||||
 | 
			
		||||
GList * meta_kms_update_get_mode_sets (MetaKmsUpdate *update);
 | 
			
		||||
@@ -110,4 +107,6 @@ GList * meta_kms_update_get_connector_properties (MetaKmsUpdate *update);
 | 
			
		||||
 | 
			
		||||
GList * meta_kms_update_get_crtc_gammas (MetaKmsUpdate *update);
 | 
			
		||||
 | 
			
		||||
gboolean meta_kms_update_has_mode_set (MetaKmsUpdate *update);
 | 
			
		||||
 | 
			
		||||
#endif /* META_KMS_UPDATE_PRIVATE_H */
 | 
			
		||||
 
 | 
			
		||||
@@ -235,23 +235,6 @@ meta_kms_plane_assignment_set_plane_property (MetaKmsPlaneAssignment *plane_assi
 | 
			
		||||
    g_list_prepend (plane_assignment->plane_properties, plane_prop);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
MetaKmsPlaneAssignment *
 | 
			
		||||
meta_kms_update_get_primary_plane_assignment (MetaKmsUpdate *update,
 | 
			
		||||
                                              MetaKmsCrtc   *crtc)
 | 
			
		||||
{
 | 
			
		||||
  GList *l;
 | 
			
		||||
 | 
			
		||||
  for (l = meta_kms_update_get_plane_assignments (update); l; l = l->next)
 | 
			
		||||
    {
 | 
			
		||||
      MetaKmsPlaneAssignment *plane_assignment = l->data;
 | 
			
		||||
 | 
			
		||||
      if (plane_assignment->crtc == crtc)
 | 
			
		||||
        return plane_assignment;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
  return NULL;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
GList *
 | 
			
		||||
meta_kms_update_get_plane_assignments (MetaKmsUpdate *update)
 | 
			
		||||
{
 | 
			
		||||
@@ -282,6 +265,12 @@ meta_kms_update_get_crtc_gammas (MetaKmsUpdate *update)
 | 
			
		||||
  return update->crtc_gammas;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
gboolean
 | 
			
		||||
meta_kms_update_has_mode_set (MetaKmsUpdate *update)
 | 
			
		||||
{
 | 
			
		||||
  return !!update->mode_sets;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void
 | 
			
		||||
meta_kms_update_seal (MetaKmsUpdate *update)
 | 
			
		||||
{
 | 
			
		||||
 
 | 
			
		||||
@@ -27,7 +27,6 @@
 | 
			
		||||
 | 
			
		||||
#include "backends/meta-monitor-transform.h"
 | 
			
		||||
#include "backends/native/meta-kms-types.h"
 | 
			
		||||
#include "meta/boxes.h"
 | 
			
		||||
 | 
			
		||||
struct _MetaKmsPageFlipFeedback
 | 
			
		||||
{
 | 
			
		||||
@@ -90,15 +89,4 @@ meta_fixed_16_to_int (MetaFixed16 fixed)
 | 
			
		||||
  return fixed / 65536;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static inline MetaRectangle
 | 
			
		||||
meta_fixed_16_rectangle_to_rectangle (MetaFixed16Rectangle fixed_rect)
 | 
			
		||||
{
 | 
			
		||||
  return (MetaRectangle) {
 | 
			
		||||
    .x = meta_fixed_16_to_int (fixed_rect.x),
 | 
			
		||||
    .y = meta_fixed_16_to_int (fixed_rect.y),
 | 
			
		||||
    .width = meta_fixed_16_to_int (fixed_rect.width),
 | 
			
		||||
    .height = meta_fixed_16_to_int (fixed_rect.height),
 | 
			
		||||
  };
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
#endif /* META_KMS_UPDATE_H */
 | 
			
		||||
 
 | 
			
		||||
@@ -175,6 +175,10 @@ struct _MetaKms
 | 
			
		||||
 | 
			
		||||
G_DEFINE_TYPE (MetaKms, meta_kms, G_TYPE_OBJECT)
 | 
			
		||||
 | 
			
		||||
static void
 | 
			
		||||
meta_kms_update_states_in_impl (MetaKms                  *kms,
 | 
			
		||||
                                MetaKmsUpdateStatesFlags  flags);
 | 
			
		||||
 | 
			
		||||
MetaKmsUpdate *
 | 
			
		||||
meta_kms_ensure_pending_update (MetaKms *kms)
 | 
			
		||||
{
 | 
			
		||||
@@ -190,17 +194,6 @@ meta_kms_get_pending_update (MetaKms *kms)
 | 
			
		||||
  return kms->pending_update;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static void
 | 
			
		||||
meta_kms_predict_states_in_impl (MetaKms       *kms,
 | 
			
		||||
                                 MetaKmsUpdate *update)
 | 
			
		||||
{
 | 
			
		||||
  meta_assert_in_kms_impl (kms);
 | 
			
		||||
 | 
			
		||||
  g_list_foreach (kms->devices,
 | 
			
		||||
                  (GFunc) meta_kms_device_predict_states_in_impl,
 | 
			
		||||
                  update);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static gboolean
 | 
			
		||||
meta_kms_update_process_in_impl (MetaKmsImpl  *impl,
 | 
			
		||||
                                 gpointer      user_data,
 | 
			
		||||
@@ -211,7 +204,9 @@ meta_kms_update_process_in_impl (MetaKmsImpl  *impl,
 | 
			
		||||
 | 
			
		||||
  ret = meta_kms_impl_process_update (impl, update, error);
 | 
			
		||||
 | 
			
		||||
  meta_kms_predict_states_in_impl (meta_kms_impl_get_kms (impl), update);
 | 
			
		||||
  if (meta_kms_update_has_mode_set (update))
 | 
			
		||||
    meta_kms_update_states_in_impl (meta_kms_impl_get_kms (impl),
 | 
			
		||||
                                    META_KMS_UPDATE_STATES_FLAG_NONE);
 | 
			
		||||
 | 
			
		||||
  return ret;
 | 
			
		||||
}
 | 
			
		||||
@@ -466,16 +461,22 @@ meta_kms_is_waiting_for_impl_task (MetaKms *kms)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static void
 | 
			
		||||
meta_kms_update_states_in_impl (MetaKms *kms)
 | 
			
		||||
meta_kms_update_states_in_impl (MetaKms                  *kms,
 | 
			
		||||
                                MetaKmsUpdateStatesFlags  flags)
 | 
			
		||||
{
 | 
			
		||||
  GList *l;
 | 
			
		||||
 | 
			
		||||
  COGL_TRACE_BEGIN_SCOPED (MetaKmsUpdateStates,
 | 
			
		||||
                           "KMS (update states)");
 | 
			
		||||
 | 
			
		||||
  meta_assert_in_kms_impl (kms);
 | 
			
		||||
 | 
			
		||||
  g_list_foreach (kms->devices,
 | 
			
		||||
                  (GFunc) meta_kms_device_update_states_in_impl,
 | 
			
		||||
                  NULL);
 | 
			
		||||
  for (l = kms->devices; l; l = l->next)
 | 
			
		||||
    {
 | 
			
		||||
      MetaKmsDevice *device = l->data;
 | 
			
		||||
 | 
			
		||||
      meta_kms_device_update_states_in_impl (device, flags);
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static gboolean
 | 
			
		||||
@@ -484,17 +485,22 @@ update_states_in_impl (MetaKmsImpl  *impl,
 | 
			
		||||
                       GError      **error)
 | 
			
		||||
{
 | 
			
		||||
  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, NULL, error);
 | 
			
		||||
  return meta_kms_run_impl_task_sync (kms,
 | 
			
		||||
                                      update_states_in_impl,
 | 
			
		||||
                                      GUINT_TO_POINTER (flags),
 | 
			
		||||
                                      error);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static void
 | 
			
		||||
@@ -502,7 +508,9 @@ 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);
 | 
			
		||||
 
 | 
			
		||||
@@ -70,7 +70,7 @@ meta_output_kms_set_underscan (MetaOutput    *output,
 | 
			
		||||
      hborder = MIN (128, (uint64_t) round (crtc->current_mode->width * 0.05));
 | 
			
		||||
      vborder = MIN (128, (uint64_t) round (crtc->current_mode->height * 0.05));
 | 
			
		||||
 | 
			
		||||
      g_debug ("Setting underscan of connector %s to %" G_GUINT64_FORMAT " x %" G_GUINT64_FORMAT,
 | 
			
		||||
      g_debug ("Setting underscan of connector %s to %lu x %lu",
 | 
			
		||||
               meta_kms_connector_get_name (output_kms->kms_connector),
 | 
			
		||||
               hborder, vborder);
 | 
			
		||||
 | 
			
		||||
@@ -104,7 +104,7 @@ meta_output_kms_set_power_save_mode (MetaOutput    *output,
 | 
			
		||||
{
 | 
			
		||||
  MetaOutputKms *output_kms = output->driver_private;
 | 
			
		||||
 | 
			
		||||
  g_debug ("Setting DPMS state of connector %s to %" G_GUINT64_FORMAT,
 | 
			
		||||
  g_debug ("Setting DPMS state of connector %s to %lu",
 | 
			
		||||
           meta_kms_connector_get_name (output_kms->kms_connector),
 | 
			
		||||
           dpms_state);
 | 
			
		||||
 | 
			
		||||
@@ -295,6 +295,7 @@ meta_create_kms_output (MetaGpuKms        *gpu_kms,
 | 
			
		||||
  MetaOutput *output;
 | 
			
		||||
  MetaOutputKms *output_kms;
 | 
			
		||||
  const MetaKmsConnectorState *connector_state;
 | 
			
		||||
  MetaMonitorTransform panel_orientation_transform;
 | 
			
		||||
  uint32_t connector_id;
 | 
			
		||||
  GArray *crtcs;
 | 
			
		||||
  GList *l;
 | 
			
		||||
@@ -317,9 +318,8 @@ meta_create_kms_output (MetaGpuKms        *gpu_kms,
 | 
			
		||||
 | 
			
		||||
  connector_state = meta_kms_connector_get_current_state (kms_connector);
 | 
			
		||||
 | 
			
		||||
  output->panel_orientation_transform =
 | 
			
		||||
    connector_state->panel_orientation_transform;
 | 
			
		||||
  if (meta_monitor_transform_is_rotated (output->panel_orientation_transform))
 | 
			
		||||
  panel_orientation_transform = connector_state->panel_orientation_transform;
 | 
			
		||||
  if (meta_monitor_transform_is_rotated (panel_orientation_transform))
 | 
			
		||||
    {
 | 
			
		||||
      output->width_mm = connector_state->height_mm;
 | 
			
		||||
      output->height_mm = connector_state->width_mm;
 | 
			
		||||
 
 | 
			
		||||
@@ -2208,7 +2208,7 @@ meta_onscreen_native_swap_buffers_with_damage (CoglOnscreen *onscreen,
 | 
			
		||||
   * animation earlier due to the animation being driven by some other monitor.
 | 
			
		||||
   */
 | 
			
		||||
  COGL_TRACE_BEGIN (MetaRendererNativeSwapBuffersWait,
 | 
			
		||||
                    "Onscreen (waiting for page flips)");
 | 
			
		||||
                    "Onscreen (waiting for page flips");
 | 
			
		||||
  wait_for_pending_flips (onscreen);
 | 
			
		||||
  COGL_TRACE_END (MetaRendererNativeSwapBuffersWait);
 | 
			
		||||
 | 
			
		||||
@@ -2276,7 +2276,7 @@ meta_onscreen_native_swap_buffers_with_damage (CoglOnscreen *onscreen,
 | 
			
		||||
    _cogl_winsys_egl_ensure_current (cogl_display);
 | 
			
		||||
 | 
			
		||||
  COGL_TRACE_BEGIN (MetaRendererNativePostKmsUpdate,
 | 
			
		||||
                    "Onscreen (post pending update)");
 | 
			
		||||
                    "Onscreen (post pending update");
 | 
			
		||||
  if (!meta_kms_post_pending_update_sync (kms, &error))
 | 
			
		||||
    {
 | 
			
		||||
      if (!g_error_matches (error, G_IO_ERROR, G_IO_ERROR_PERMISSION_DENIED))
 | 
			
		||||
@@ -3053,6 +3053,7 @@ meta_renderer_native_create_onscreen (MetaRendererNative   *renderer_native,
 | 
			
		||||
static CoglOffscreen *
 | 
			
		||||
meta_renderer_native_create_offscreen (MetaRendererNative    *renderer,
 | 
			
		||||
                                       CoglContext           *context,
 | 
			
		||||
                                       MetaMonitorTransform   transform,
 | 
			
		||||
                                       gint                   view_width,
 | 
			
		||||
                                       gint                   view_height,
 | 
			
		||||
                                       GError               **error)
 | 
			
		||||
@@ -3255,7 +3256,6 @@ meta_renderer_native_create_view (MetaRenderer       *renderer,
 | 
			
		||||
  MetaMonitorTransform view_transform;
 | 
			
		||||
  CoglOnscreen *onscreen = NULL;
 | 
			
		||||
  CoglOffscreen *offscreen = NULL;
 | 
			
		||||
  CoglOffscreen *shadowfb = NULL;
 | 
			
		||||
  float scale;
 | 
			
		||||
  int width, height;
 | 
			
		||||
  MetaRendererView *view;
 | 
			
		||||
@@ -3282,35 +3282,18 @@ meta_renderer_native_create_view (MetaRenderer       *renderer,
 | 
			
		||||
  if (!onscreen)
 | 
			
		||||
    g_error ("Failed to allocate onscreen framebuffer: %s", error->message);
 | 
			
		||||
 | 
			
		||||
 if (view_transform != META_MONITOR_TRANSFORM_NORMAL)
 | 
			
		||||
  if (view_transform != META_MONITOR_TRANSFORM_NORMAL ||
 | 
			
		||||
      should_force_shadow_fb (renderer_native,
 | 
			
		||||
                              renderer_native->primary_gpu_kms))
 | 
			
		||||
    {
 | 
			
		||||
      offscreen = meta_renderer_native_create_offscreen (renderer_native,
 | 
			
		||||
                                                         cogl_context,
 | 
			
		||||
                                                         view_transform,
 | 
			
		||||
                                                         width,
 | 
			
		||||
                                                         height,
 | 
			
		||||
                                                         &error);
 | 
			
		||||
      if (!offscreen)
 | 
			
		||||
        g_error ("Failed to allocate back buffer texture: %s", error->message);
 | 
			
		||||
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
  if (should_force_shadow_fb (renderer_native,
 | 
			
		||||
                              renderer_native->primary_gpu_kms))
 | 
			
		||||
    {
 | 
			
		||||
      int shadow_width;
 | 
			
		||||
      int shadow_height;
 | 
			
		||||
 | 
			
		||||
      /* The shadowfb must be the same size as the on-screen framebuffer */
 | 
			
		||||
      shadow_width = cogl_framebuffer_get_width (COGL_FRAMEBUFFER (onscreen));
 | 
			
		||||
      shadow_height = cogl_framebuffer_get_height (COGL_FRAMEBUFFER (onscreen));
 | 
			
		||||
 | 
			
		||||
      shadowfb = meta_renderer_native_create_offscreen (renderer_native,
 | 
			
		||||
                                                        cogl_context,
 | 
			
		||||
                                                        shadow_width,
 | 
			
		||||
                                                        shadow_height,
 | 
			
		||||
                                                        &error);
 | 
			
		||||
      if (!shadowfb)
 | 
			
		||||
        g_error ("Failed to allocate shadow buffer texture: %s", error->message);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
  view = g_object_new (META_TYPE_RENDERER_VIEW,
 | 
			
		||||
@@ -3318,12 +3301,10 @@ meta_renderer_native_create_view (MetaRenderer       *renderer,
 | 
			
		||||
                       "scale", scale,
 | 
			
		||||
                       "framebuffer", onscreen,
 | 
			
		||||
                       "offscreen", offscreen,
 | 
			
		||||
                       "shadowfb", shadowfb,
 | 
			
		||||
                       "logical-monitor", logical_monitor,
 | 
			
		||||
                       "transform", view_transform,
 | 
			
		||||
                       NULL);
 | 
			
		||||
  g_clear_pointer (&offscreen, cogl_object_unref);
 | 
			
		||||
  g_clear_pointer (&shadowfb, cogl_object_unref);
 | 
			
		||||
 | 
			
		||||
  meta_onscreen_native_set_view (onscreen, view);
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -67,10 +67,6 @@ struct _MetaBackendX11Private
 | 
			
		||||
  XSyncAlarm user_active_alarm;
 | 
			
		||||
  XSyncCounter counter;
 | 
			
		||||
 | 
			
		||||
  int current_touch_replay_sync_serial;
 | 
			
		||||
  int pending_touch_replay_sync_serial;
 | 
			
		||||
  Atom touch_replay_sync_atom;
 | 
			
		||||
 | 
			
		||||
  int xinput_opcode;
 | 
			
		||||
  int xinput_event_base;
 | 
			
		||||
  int xinput_error_base;
 | 
			
		||||
@@ -179,26 +175,6 @@ meta_backend_x11_translate_device_event (MetaBackendX11 *x11,
 | 
			
		||||
  backend_x11_class->translate_device_event (x11, device_event);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static void
 | 
			
		||||
maybe_translate_touch_replay_pointer_event (MetaBackendX11 *x11,
 | 
			
		||||
                                            XIDeviceEvent  *device_event)
 | 
			
		||||
{
 | 
			
		||||
  MetaBackendX11Private *priv = meta_backend_x11_get_instance_private (x11);
 | 
			
		||||
 | 
			
		||||
  if (!device_event->send_event &&
 | 
			
		||||
      device_event->time != META_CURRENT_TIME &&
 | 
			
		||||
      priv->current_touch_replay_sync_serial !=
 | 
			
		||||
      priv->pending_touch_replay_sync_serial &&
 | 
			
		||||
      XSERVER_TIME_IS_BEFORE (device_event->time, priv->latest_evtime))
 | 
			
		||||
    {
 | 
			
		||||
      /* Emulated pointer events received after XIRejectTouch is received
 | 
			
		||||
       * on a passive touch grab will contain older timestamps, update those
 | 
			
		||||
       * so we dont get InvalidTime at grabs.
 | 
			
		||||
       */
 | 
			
		||||
      device_event->time = priv->latest_evtime;
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static void
 | 
			
		||||
translate_device_event (MetaBackendX11 *x11,
 | 
			
		||||
                        XIDeviceEvent  *device_event)
 | 
			
		||||
@@ -208,7 +184,19 @@ translate_device_event (MetaBackendX11 *x11,
 | 
			
		||||
  meta_backend_x11_translate_device_event (x11, device_event);
 | 
			
		||||
 | 
			
		||||
  if (!device_event->send_event && device_event->time != META_CURRENT_TIME)
 | 
			
		||||
    priv->latest_evtime = device_event->time;
 | 
			
		||||
    {
 | 
			
		||||
      if (XSERVER_TIME_IS_BEFORE (device_event->time, priv->latest_evtime))
 | 
			
		||||
        {
 | 
			
		||||
          /* Emulated pointer events received after XIRejectTouch is received
 | 
			
		||||
           * on a passive touch grab will contain older timestamps, update those
 | 
			
		||||
           * so we dont get InvalidTime at grabs.
 | 
			
		||||
           */
 | 
			
		||||
          device_event->time = priv->latest_evtime;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
      /* Update the internal latest evtime, for any possible later use */
 | 
			
		||||
      priv->latest_evtime = device_event->time;
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static void
 | 
			
		||||
@@ -273,9 +261,6 @@ maybe_spoof_event_as_stage_event (MetaBackendX11 *x11,
 | 
			
		||||
    case XI_Motion:
 | 
			
		||||
    case XI_ButtonPress:
 | 
			
		||||
    case XI_ButtonRelease:
 | 
			
		||||
      maybe_translate_touch_replay_pointer_event (x11,
 | 
			
		||||
                                                  (XIDeviceEvent *) input_event);
 | 
			
		||||
      /* Intentional fall-through */
 | 
			
		||||
    case XI_KeyPress:
 | 
			
		||||
    case XI_KeyRelease:
 | 
			
		||||
    case XI_TouchBegin:
 | 
			
		||||
@@ -344,17 +329,6 @@ handle_host_xevent (MetaBackend *backend,
 | 
			
		||||
  gboolean bypass_clutter = FALSE;
 | 
			
		||||
  MetaDisplay *display;
 | 
			
		||||
 | 
			
		||||
  switch (event->type)
 | 
			
		||||
    {
 | 
			
		||||
    case ClientMessage:
 | 
			
		||||
      if (event->xclient.window == meta_backend_x11_get_xwindow (x11) &&
 | 
			
		||||
          event->xclient.message_type == priv->touch_replay_sync_atom)
 | 
			
		||||
        priv->current_touch_replay_sync_serial = event->xclient.data.l[0];
 | 
			
		||||
      break;
 | 
			
		||||
    default:
 | 
			
		||||
      break;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
  XGetEventData (priv->xdisplay, &event->xcookie);
 | 
			
		||||
 | 
			
		||||
  display = meta_get_display ();
 | 
			
		||||
@@ -382,7 +356,6 @@ handle_host_xevent (MetaBackend *backend,
 | 
			
		||||
        {
 | 
			
		||||
          switch (xkb_ev->any.xkb_type)
 | 
			
		||||
            {
 | 
			
		||||
            case XkbNewKeyboardNotify:
 | 
			
		||||
            case XkbMapNotify:
 | 
			
		||||
              keymap_changed (backend);
 | 
			
		||||
              break;
 | 
			
		||||
@@ -559,10 +532,6 @@ meta_backend_x11_post_init (MetaBackend *backend)
 | 
			
		||||
  monitor_manager = meta_backend_get_monitor_manager (backend);
 | 
			
		||||
  g_signal_connect (monitor_manager, "monitors-changed-internal",
 | 
			
		||||
                    G_CALLBACK (on_monitors_changed), backend);
 | 
			
		||||
 | 
			
		||||
  priv->touch_replay_sync_atom = XInternAtom (priv->xdisplay,
 | 
			
		||||
                                              "_MUTTER_TOUCH_SEQUENCE_SYNC",
 | 
			
		||||
                                              False);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static ClutterBackend *
 | 
			
		||||
@@ -620,43 +589,6 @@ meta_backend_x11_ungrab_device (MetaBackend *backend,
 | 
			
		||||
  return (ret == Success);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static void
 | 
			
		||||
meta_backend_x11_finish_touch_sequence (MetaBackend          *backend,
 | 
			
		||||
                                        ClutterEventSequence *sequence,
 | 
			
		||||
                                        MetaSequenceState     state)
 | 
			
		||||
{
 | 
			
		||||
  MetaBackendX11 *x11 = META_BACKEND_X11 (backend);
 | 
			
		||||
  MetaBackendX11Private *priv = meta_backend_x11_get_instance_private (x11);
 | 
			
		||||
  int event_mode;
 | 
			
		||||
 | 
			
		||||
  if (state == META_SEQUENCE_ACCEPTED)
 | 
			
		||||
    event_mode = XIAcceptTouch;
 | 
			
		||||
  else if (state == META_SEQUENCE_REJECTED)
 | 
			
		||||
    event_mode = XIRejectTouch;
 | 
			
		||||
  else
 | 
			
		||||
    g_return_if_reached ();
 | 
			
		||||
 | 
			
		||||
  XIAllowTouchEvents (priv->xdisplay,
 | 
			
		||||
                      META_VIRTUAL_CORE_POINTER_ID,
 | 
			
		||||
                      meta_x11_event_sequence_get_touch_detail (sequence),
 | 
			
		||||
                      DefaultRootWindow (priv->xdisplay), event_mode);
 | 
			
		||||
 | 
			
		||||
  if (state == META_SEQUENCE_REJECTED)
 | 
			
		||||
    {
 | 
			
		||||
      XClientMessageEvent ev;
 | 
			
		||||
 | 
			
		||||
      ev = (XClientMessageEvent) {
 | 
			
		||||
        .type = ClientMessage,
 | 
			
		||||
        .window = meta_backend_x11_get_xwindow (x11),
 | 
			
		||||
        .message_type = priv->touch_replay_sync_atom,
 | 
			
		||||
        .format = 32,
 | 
			
		||||
        .data.l[0] = ++priv->pending_touch_replay_sync_serial,
 | 
			
		||||
      };
 | 
			
		||||
      XSendEvent (priv->xdisplay, meta_backend_x11_get_xwindow (x11),
 | 
			
		||||
                  False, 0, (XEvent *) &ev);
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static void
 | 
			
		||||
meta_backend_x11_warp_pointer (MetaBackend *backend,
 | 
			
		||||
                               int          x,
 | 
			
		||||
@@ -848,7 +780,6 @@ meta_backend_x11_class_init (MetaBackendX11Class *klass)
 | 
			
		||||
  backend_class->post_init = meta_backend_x11_post_init;
 | 
			
		||||
  backend_class->grab_device = meta_backend_x11_grab_device;
 | 
			
		||||
  backend_class->ungrab_device = meta_backend_x11_ungrab_device;
 | 
			
		||||
  backend_class->finish_touch_sequence = meta_backend_x11_finish_touch_sequence;
 | 
			
		||||
  backend_class->warp_pointer = meta_backend_x11_warp_pointer;
 | 
			
		||||
  backend_class->get_current_logical_monitor = meta_backend_x11_get_current_logical_monitor;
 | 
			
		||||
  backend_class->get_keymap = meta_backend_x11_get_keymap;
 | 
			
		||||
 
 | 
			
		||||
@@ -129,7 +129,7 @@ meta_clutter_backend_x11_translate_event (ClutterBackend *backend,
 | 
			
		||||
    return TRUE;
 | 
			
		||||
 | 
			
		||||
  if (meta_keymap_x11_handle_event (backend_x11->keymap, native))
 | 
			
		||||
    return FALSE;
 | 
			
		||||
    return TRUE;
 | 
			
		||||
 | 
			
		||||
  stage_x11 = META_STAGE_X11 (clutter_backend_get_stage_window (backend));
 | 
			
		||||
  if (meta_stage_x11_translate_event (stage_x11, native, event))
 | 
			
		||||
 
 | 
			
		||||
@@ -1291,22 +1291,6 @@ handle_raw_event (MetaDeviceManagerX11 *manager_xi2,
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static ClutterInputDevice *
 | 
			
		||||
get_source_device_checked (MetaDeviceManagerX11 *manager_xi2,
 | 
			
		||||
                           XIDeviceEvent        *xev)
 | 
			
		||||
{
 | 
			
		||||
  ClutterInputDevice *source_device;
 | 
			
		||||
 | 
			
		||||
  source_device = g_hash_table_lookup (manager_xi2->devices_by_id,
 | 
			
		||||
                                       GINT_TO_POINTER (xev->sourceid));
 | 
			
		||||
 | 
			
		||||
  if (!source_device)
 | 
			
		||||
    g_warning ("Impossible to get the source device with id %d for event of "
 | 
			
		||||
               "type %d", xev->sourceid, xev->evtype);
 | 
			
		||||
 | 
			
		||||
  return source_device;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
gboolean
 | 
			
		||||
meta_device_manager_x11_translate_event (MetaDeviceManagerX11 *manager_xi2,
 | 
			
		||||
                                         XEvent               *xevent,
 | 
			
		||||
@@ -1395,10 +1379,6 @@ meta_device_manager_x11_translate_event (MetaDeviceManagerX11 *manager_xi2,
 | 
			
		||||
        char buffer[7] = { 0, };
 | 
			
		||||
        gunichar n;
 | 
			
		||||
 | 
			
		||||
        source_device = get_source_device_checked (manager_xi2, xev);
 | 
			
		||||
        if (!source_device)
 | 
			
		||||
          return FALSE;
 | 
			
		||||
 | 
			
		||||
        event->key.type = event->type = (xev->evtype == XI_KeyPress)
 | 
			
		||||
                                      ? CLUTTER_KEY_PRESS
 | 
			
		||||
                                      : CLUTTER_KEY_RELEASE;
 | 
			
		||||
@@ -1433,6 +1413,8 @@ meta_device_manager_x11_translate_event (MetaDeviceManagerX11 *manager_xi2,
 | 
			
		||||
        event_x11->caps_lock_set =
 | 
			
		||||
          clutter_keymap_get_caps_lock_state (CLUTTER_KEYMAP (keymap_x11));
 | 
			
		||||
 | 
			
		||||
        source_device = g_hash_table_lookup (manager_xi2->devices_by_id,
 | 
			
		||||
                                             GINT_TO_POINTER (xev->sourceid));
 | 
			
		||||
        clutter_event_set_source_device (event, source_device);
 | 
			
		||||
 | 
			
		||||
        device = g_hash_table_lookup (manager_xi2->devices_by_id,
 | 
			
		||||
@@ -1476,10 +1458,8 @@ meta_device_manager_x11_translate_event (MetaDeviceManagerX11 *manager_xi2,
 | 
			
		||||
      {
 | 
			
		||||
        XIDeviceEvent *xev = (XIDeviceEvent *) xi_event;
 | 
			
		||||
 | 
			
		||||
        source_device = get_source_device_checked (manager_xi2, xev);
 | 
			
		||||
        if (!source_device)
 | 
			
		||||
          return FALSE;
 | 
			
		||||
 | 
			
		||||
        source_device = g_hash_table_lookup (manager_xi2->devices_by_id,
 | 
			
		||||
                                             GINT_TO_POINTER (xev->sourceid));
 | 
			
		||||
        device = g_hash_table_lookup (manager_xi2->devices_by_id,
 | 
			
		||||
                                      GINT_TO_POINTER (xev->deviceid));
 | 
			
		||||
 | 
			
		||||
@@ -1646,7 +1626,7 @@ meta_device_manager_x11_translate_event (MetaDeviceManagerX11 *manager_xi2,
 | 
			
		||||
            break;
 | 
			
		||||
          }
 | 
			
		||||
 | 
			
		||||
        if (device->stage != NULL)
 | 
			
		||||
        if (source_device != NULL && device->stage != NULL)
 | 
			
		||||
          _clutter_input_device_set_stage (source_device, device->stage);
 | 
			
		||||
 | 
			
		||||
        if (xev->flags & XIPointerEmulated)
 | 
			
		||||
@@ -1664,10 +1644,8 @@ meta_device_manager_x11_translate_event (MetaDeviceManagerX11 *manager_xi2,
 | 
			
		||||
        XIDeviceEvent *xev = (XIDeviceEvent *) xi_event;
 | 
			
		||||
        double delta_x, delta_y;
 | 
			
		||||
 | 
			
		||||
        source_device = get_source_device_checked (manager_xi2, xev);
 | 
			
		||||
        if (!source_device)
 | 
			
		||||
          return FALSE;
 | 
			
		||||
 | 
			
		||||
        source_device = g_hash_table_lookup (manager_xi2->devices_by_id,
 | 
			
		||||
                                             GINT_TO_POINTER (xev->sourceid));
 | 
			
		||||
        device = g_hash_table_lookup (manager_xi2->devices_by_id,
 | 
			
		||||
                                      GINT_TO_POINTER (xev->deviceid));
 | 
			
		||||
 | 
			
		||||
@@ -1738,7 +1716,7 @@ meta_device_manager_x11_translate_event (MetaDeviceManagerX11 *manager_xi2,
 | 
			
		||||
                                             event->motion.y,
 | 
			
		||||
                                             &xev->valuators);
 | 
			
		||||
 | 
			
		||||
        if (device->stage != NULL)
 | 
			
		||||
        if (source_device != NULL && device->stage != NULL)
 | 
			
		||||
          _clutter_input_device_set_stage (source_device, device->stage);
 | 
			
		||||
 | 
			
		||||
        if (xev->flags & XIPointerEmulated)
 | 
			
		||||
 
 | 
			
		||||
@@ -82,12 +82,12 @@ meta_x11_handle_event (XEvent *xevent)
 | 
			
		||||
  gboolean allocated_event;
 | 
			
		||||
 | 
			
		||||
  /* The return values here are someone approximate; we return
 | 
			
		||||
   * CLUTTER_X11_FILTER_REMOVE if a clutter event is
 | 
			
		||||
   * META_X11_FILTER_REMOVE if a clutter event is
 | 
			
		||||
   * generated for the event. This mostly, but not entirely,
 | 
			
		||||
   * corresponds to whether other event processing should be
 | 
			
		||||
   * excluded. As long as the stage window is not shared with another
 | 
			
		||||
   * toolkit it should be safe, and never return
 | 
			
		||||
   * %CLUTTER_X11_FILTER_REMOVE when more processing is needed.
 | 
			
		||||
   * %META_X11_FILTER_REMOVE when more processing is needed.
 | 
			
		||||
   */
 | 
			
		||||
 | 
			
		||||
  result = CLUTTER_X11_FILTER_CONTINUE;
 | 
			
		||||
 
 | 
			
		||||
@@ -118,12 +118,9 @@ get_property (ClutterInputDevice *device,
 | 
			
		||||
 | 
			
		||||
  device_id = clutter_input_device_get_device_id (device);
 | 
			
		||||
 | 
			
		||||
  clutter_x11_trap_x_errors ();
 | 
			
		||||
  rc = XIGetProperty (xdisplay, device_id, property_atom,
 | 
			
		||||
                      0, 10, False, type, &type_ret, &format_ret,
 | 
			
		||||
                      &nitems_ret, &bytes_after_ret, &data_ret);
 | 
			
		||||
  clutter_x11_untrap_x_errors ();
 | 
			
		||||
 | 
			
		||||
  if (rc == Success && type_ret == type && format_ret == format && nitems_ret >= nitems)
 | 
			
		||||
    {
 | 
			
		||||
      if (nitems_ret > nitems)
 | 
			
		||||
 
 | 
			
		||||
@@ -595,14 +595,9 @@ meta_compositor_add_window (MetaCompositor    *compositor,
 | 
			
		||||
      window_actor_type = META_TYPE_WINDOW_ACTOR_X11;
 | 
			
		||||
      break;
 | 
			
		||||
 | 
			
		||||
#ifdef HAVE_WAYLAND
 | 
			
		||||
    case META_WINDOW_CLIENT_TYPE_WAYLAND:
 | 
			
		||||
      window_actor_type = META_TYPE_WINDOW_ACTOR_WAYLAND;
 | 
			
		||||
      break;
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
    default:
 | 
			
		||||
      g_return_if_reached ();
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
  window_actor = g_object_new (window_actor_type,
 | 
			
		||||
@@ -1290,14 +1285,9 @@ meta_compositor_class_init (MetaCompositorClass *klass)
 | 
			
		||||
void
 | 
			
		||||
meta_disable_unredirect_for_display (MetaDisplay *display)
 | 
			
		||||
{
 | 
			
		||||
  MetaCompositor *compositor;
 | 
			
		||||
  MetaCompositorPrivate *priv;
 | 
			
		||||
 | 
			
		||||
  if (display->closing)
 | 
			
		||||
    return;
 | 
			
		||||
 | 
			
		||||
  compositor = get_compositor_for_display (display);
 | 
			
		||||
  priv = meta_compositor_get_instance_private (compositor);
 | 
			
		||||
  MetaCompositor *compositor = get_compositor_for_display (display);
 | 
			
		||||
  MetaCompositorPrivate *priv =
 | 
			
		||||
    meta_compositor_get_instance_private (compositor);
 | 
			
		||||
 | 
			
		||||
  priv->disable_unredirect_count++;
 | 
			
		||||
}
 | 
			
		||||
@@ -1312,14 +1302,9 @@ meta_disable_unredirect_for_display (MetaDisplay *display)
 | 
			
		||||
void
 | 
			
		||||
meta_enable_unredirect_for_display (MetaDisplay *display)
 | 
			
		||||
{
 | 
			
		||||
  MetaCompositor *compositor;
 | 
			
		||||
  MetaCompositorPrivate *priv;
 | 
			
		||||
 | 
			
		||||
  if (display->closing)
 | 
			
		||||
    return;
 | 
			
		||||
 | 
			
		||||
  compositor = get_compositor_for_display (display);
 | 
			
		||||
  priv = meta_compositor_get_instance_private (compositor);
 | 
			
		||||
  MetaCompositor *compositor = get_compositor_for_display (display);
 | 
			
		||||
  MetaCompositorPrivate *priv =
 | 
			
		||||
    meta_compositor_get_instance_private (compositor);
 | 
			
		||||
 | 
			
		||||
  if (priv->disable_unredirect_count == 0)
 | 
			
		||||
    g_warning ("Called enable_unredirect_for_display while unredirection is enabled.");
 | 
			
		||||
 
 | 
			
		||||
@@ -573,8 +573,6 @@ meta_background_actor_paint (ClutterActor *actor)
 | 
			
		||||
      paint_clipped_rectangle (fb, self->pipeline, &rect,
 | 
			
		||||
                               &self->texture_area);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
  cairo_region_destroy (region);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static void
 | 
			
		||||
 
 | 
			
		||||
@@ -195,8 +195,6 @@ meta_plugin_manager_event_simple (MetaPluginManager *plugin_mgr,
 | 
			
		||||
      if (klass->destroy)
 | 
			
		||||
        {
 | 
			
		||||
          retval = TRUE;
 | 
			
		||||
          meta_plugin_manager_kill_window_effects (plugin_mgr,
 | 
			
		||||
                                                   actor);
 | 
			
		||||
          klass->destroy (plugin, actor);
 | 
			
		||||
        }
 | 
			
		||||
      break;
 | 
			
		||||
 
 | 
			
		||||
@@ -492,6 +492,8 @@ set_cogl_texture (MetaShapedTexture *stex,
 | 
			
		||||
 | 
			
		||||
  if (stex->create_mipmaps)
 | 
			
		||||
    meta_texture_tower_set_base_texture (stex->paint_tower, cogl_tex);
 | 
			
		||||
 | 
			
		||||
  clutter_content_invalidate (CLUTTER_CONTENT (stex));
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static gboolean
 | 
			
		||||
@@ -1112,9 +1114,7 @@ should_get_via_offscreen (MetaShapedTexture *stex)
 | 
			
		||||
 | 
			
		||||
static cairo_surface_t *
 | 
			
		||||
get_image_via_offscreen (MetaShapedTexture     *stex,
 | 
			
		||||
                         cairo_rectangle_int_t *clip,
 | 
			
		||||
                         int                    image_width,
 | 
			
		||||
                         int                    image_height)
 | 
			
		||||
                         cairo_rectangle_int_t *clip)
 | 
			
		||||
{
 | 
			
		||||
  g_autoptr (ClutterPaintNode) root_node = NULL;
 | 
			
		||||
  ClutterBackend *clutter_backend = clutter_get_default_backend ();
 | 
			
		||||
@@ -1132,16 +1132,16 @@ get_image_via_offscreen (MetaShapedTexture     *stex,
 | 
			
		||||
  if (!clip)
 | 
			
		||||
    {
 | 
			
		||||
      fallback_clip = (cairo_rectangle_int_t) {
 | 
			
		||||
        .width = image_width,
 | 
			
		||||
        .height = image_height,
 | 
			
		||||
        .width = stex->dst_width,
 | 
			
		||||
        .height = stex->dst_height,
 | 
			
		||||
      };
 | 
			
		||||
      clip = &fallback_clip;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
  image_texture =
 | 
			
		||||
    COGL_TEXTURE (cogl_texture_2d_new_with_size (cogl_context,
 | 
			
		||||
                                                 image_width,
 | 
			
		||||
                                                 image_height));
 | 
			
		||||
                                                 stex->dst_width,
 | 
			
		||||
                                                 stex->dst_height));
 | 
			
		||||
  cogl_primitive_texture_set_auto_mipmap (COGL_PRIMITIVE_TEXTURE (image_texture),
 | 
			
		||||
                                          FALSE);
 | 
			
		||||
  if (!cogl_texture_allocate (COGL_TEXTURE (image_texture), &error))
 | 
			
		||||
@@ -1164,11 +1164,11 @@ get_image_via_offscreen (MetaShapedTexture     *stex,
 | 
			
		||||
  cogl_framebuffer_push_matrix (fb);
 | 
			
		||||
  cogl_matrix_init_identity (&projection_matrix);
 | 
			
		||||
  cogl_matrix_scale (&projection_matrix,
 | 
			
		||||
                     1.0 / (image_width / 2.0),
 | 
			
		||||
                     -1.0 / (image_height / 2.0), 0);
 | 
			
		||||
                     1.0 / (stex->dst_width / 2.0),
 | 
			
		||||
                     -1.0 / (stex->dst_height / 2.0), 0);
 | 
			
		||||
  cogl_matrix_translate (&projection_matrix,
 | 
			
		||||
                         -(image_width / 2.0),
 | 
			
		||||
                         -(image_height / 2.0), 0);
 | 
			
		||||
                         -(stex->dst_width / 2.0),
 | 
			
		||||
                         -(stex->dst_height / 2.0), 0);
 | 
			
		||||
 | 
			
		||||
  cogl_framebuffer_set_projection_matrix (fb, &projection_matrix);
 | 
			
		||||
 | 
			
		||||
@@ -1180,9 +1180,8 @@ get_image_via_offscreen (MetaShapedTexture     *stex,
 | 
			
		||||
  do_paint_content (stex, root_node,
 | 
			
		||||
                    stex->texture,
 | 
			
		||||
                    &(ClutterActorBox) {
 | 
			
		||||
                      0, 0,
 | 
			
		||||
                      image_width,
 | 
			
		||||
                      image_height,
 | 
			
		||||
                      clip->x, clip->y,
 | 
			
		||||
                      clip->width, clip->height,
 | 
			
		||||
                    },
 | 
			
		||||
                    255);
 | 
			
		||||
 | 
			
		||||
@@ -1205,7 +1204,7 @@ get_image_via_offscreen (MetaShapedTexture     *stex,
 | 
			
		||||
/**
 | 
			
		||||
 * meta_shaped_texture_get_image:
 | 
			
		||||
 * @stex: A #MetaShapedTexture
 | 
			
		||||
 * @clip: (nullable): A clipping rectangle, to help prevent extra processing.
 | 
			
		||||
 * @clip: A clipping rectangle, to help prevent extra processing.
 | 
			
		||||
 * In the case that the clipping rectangle is partially or fully
 | 
			
		||||
 * outside the bounds of the texture, the rectangle will be clipped.
 | 
			
		||||
 *
 | 
			
		||||
@@ -1213,14 +1212,14 @@ get_image_via_offscreen (MetaShapedTexture     *stex,
 | 
			
		||||
 * image by alpha blending the two images, and returns the flattened
 | 
			
		||||
 * image.
 | 
			
		||||
 *
 | 
			
		||||
 * Returns: (nullable) (transfer full): a new cairo surface to be freed with
 | 
			
		||||
 * Returns: (transfer full): a new cairo surface to be freed with
 | 
			
		||||
 * cairo_surface_destroy().
 | 
			
		||||
 */
 | 
			
		||||
cairo_surface_t *
 | 
			
		||||
meta_shaped_texture_get_image (MetaShapedTexture     *stex,
 | 
			
		||||
                               cairo_rectangle_int_t *clip)
 | 
			
		||||
{
 | 
			
		||||
  cairo_rectangle_int_t *image_clip = NULL;
 | 
			
		||||
  cairo_rectangle_int_t *transformed_clip = NULL;
 | 
			
		||||
  CoglTexture *texture, *mask_texture;
 | 
			
		||||
  cairo_surface_t *surface;
 | 
			
		||||
 | 
			
		||||
@@ -1240,43 +1239,31 @@ meta_shaped_texture_get_image (MetaShapedTexture     *stex,
 | 
			
		||||
    {
 | 
			
		||||
      cairo_rectangle_int_t dst_rect;
 | 
			
		||||
 | 
			
		||||
      image_clip = alloca (sizeof (cairo_rectangle_int_t));
 | 
			
		||||
      transformed_clip = alloca (sizeof (cairo_rectangle_int_t));
 | 
			
		||||
 | 
			
		||||
      meta_rectangle_scale_double (clip, stex->buffer_scale,
 | 
			
		||||
                                   META_ROUNDING_STRATEGY_GROW,
 | 
			
		||||
                                   transformed_clip);
 | 
			
		||||
 | 
			
		||||
      dst_rect = (cairo_rectangle_int_t) {
 | 
			
		||||
        .width = stex->dst_width,
 | 
			
		||||
        .height = stex->dst_height,
 | 
			
		||||
      };
 | 
			
		||||
 | 
			
		||||
      if (!meta_rectangle_intersect (&dst_rect, clip,
 | 
			
		||||
                                     image_clip))
 | 
			
		||||
      if (!meta_rectangle_intersect (&dst_rect, transformed_clip,
 | 
			
		||||
                                     transformed_clip))
 | 
			
		||||
        return NULL;
 | 
			
		||||
 | 
			
		||||
      *image_clip = (MetaRectangle) {
 | 
			
		||||
        .x = image_clip->x * stex->buffer_scale,
 | 
			
		||||
        .y = image_clip->y * stex->buffer_scale,
 | 
			
		||||
        .width = image_clip->width * stex->buffer_scale,
 | 
			
		||||
        .height = image_clip->height * stex->buffer_scale,
 | 
			
		||||
      };
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
  if (should_get_via_offscreen (stex))
 | 
			
		||||
    {
 | 
			
		||||
      int image_width;
 | 
			
		||||
      int image_height;
 | 
			
		||||
    return get_image_via_offscreen (stex, transformed_clip);
 | 
			
		||||
 | 
			
		||||
      image_width = stex->dst_width * stex->buffer_scale;
 | 
			
		||||
      image_height = stex->dst_height * stex->buffer_scale;
 | 
			
		||||
      return get_image_via_offscreen (stex,
 | 
			
		||||
                                      image_clip,
 | 
			
		||||
                                      image_width,
 | 
			
		||||
                                      image_height);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
  if (image_clip)
 | 
			
		||||
  if (transformed_clip)
 | 
			
		||||
    texture = cogl_texture_new_from_sub_texture (texture,
 | 
			
		||||
                                                 image_clip->x,
 | 
			
		||||
                                                 image_clip->y,
 | 
			
		||||
                                                 image_clip->width,
 | 
			
		||||
                                                 image_clip->height);
 | 
			
		||||
                                                 transformed_clip->x,
 | 
			
		||||
                                                 transformed_clip->y,
 | 
			
		||||
                                                 transformed_clip->width,
 | 
			
		||||
                                                 transformed_clip->height);
 | 
			
		||||
 | 
			
		||||
  surface = cairo_image_surface_create (CAIRO_FORMAT_ARGB32,
 | 
			
		||||
                                        cogl_texture_get_width (texture),
 | 
			
		||||
@@ -1288,7 +1275,7 @@ meta_shaped_texture_get_image (MetaShapedTexture     *stex,
 | 
			
		||||
 | 
			
		||||
  cairo_surface_mark_dirty (surface);
 | 
			
		||||
 | 
			
		||||
  if (image_clip)
 | 
			
		||||
  if (transformed_clip)
 | 
			
		||||
    cogl_object_unref (texture);
 | 
			
		||||
 | 
			
		||||
  mask_texture = stex->mask_texture;
 | 
			
		||||
@@ -1297,13 +1284,13 @@ meta_shaped_texture_get_image (MetaShapedTexture     *stex,
 | 
			
		||||
      cairo_t *cr;
 | 
			
		||||
      cairo_surface_t *mask_surface;
 | 
			
		||||
 | 
			
		||||
      if (image_clip)
 | 
			
		||||
      if (transformed_clip)
 | 
			
		||||
        mask_texture =
 | 
			
		||||
          cogl_texture_new_from_sub_texture (mask_texture,
 | 
			
		||||
                                             image_clip->x,
 | 
			
		||||
                                             image_clip->y,
 | 
			
		||||
                                             image_clip->width,
 | 
			
		||||
                                             image_clip->height);
 | 
			
		||||
                                             transformed_clip->x,
 | 
			
		||||
                                             transformed_clip->y,
 | 
			
		||||
                                             transformed_clip->width,
 | 
			
		||||
                                             transformed_clip->height);
 | 
			
		||||
 | 
			
		||||
      mask_surface = cairo_image_surface_create (CAIRO_FORMAT_A8,
 | 
			
		||||
                                                 cogl_texture_get_width (mask_texture),
 | 
			
		||||
@@ -1323,7 +1310,7 @@ meta_shaped_texture_get_image (MetaShapedTexture     *stex,
 | 
			
		||||
 | 
			
		||||
      cairo_surface_destroy (mask_surface);
 | 
			
		||||
 | 
			
		||||
      if (image_clip)
 | 
			
		||||
      if (transformed_clip)
 | 
			
		||||
        cogl_object_unref (mask_texture);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -300,21 +300,6 @@ meta_surface_actor_init (MetaSurfaceActor *self)
 | 
			
		||||
                                  CLUTTER_REQUEST_CONTENT_SIZE);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * meta_surface_actor_get_image:
 | 
			
		||||
 * @self: A #MetaSurfaceActor
 | 
			
		||||
 * @clip: (nullable): A clipping rectangle. The clip region is in
 | 
			
		||||
 * the same coordinate space as the contents preferred size.
 | 
			
		||||
 * For a shaped texture of a wl_surface, this means surface
 | 
			
		||||
 * coordinate space. If NULL, the whole content will be used.
 | 
			
		||||
 *
 | 
			
		||||
 * Get the image from the texture content. The resulting size of
 | 
			
		||||
 * the returned image may be different from the preferred size of
 | 
			
		||||
 * the shaped texture content.
 | 
			
		||||
 *
 | 
			
		||||
 * Returns: (nullable) (transfer full): a new cairo surface to be freed
 | 
			
		||||
 * with cairo_surface_destroy().
 | 
			
		||||
 */
 | 
			
		||||
cairo_surface_t *
 | 
			
		||||
meta_surface_actor_get_image (MetaSurfaceActor      *self,
 | 
			
		||||
                              cairo_rectangle_int_t *clip)
 | 
			
		||||
 
 | 
			
		||||
@@ -29,7 +29,6 @@
 | 
			
		||||
#include "core/frame.h"
 | 
			
		||||
#include "compositor/compositor-private.h"
 | 
			
		||||
#include "compositor/meta-cullable.h"
 | 
			
		||||
#include "compositor/meta-shaped-texture-private.h"
 | 
			
		||||
#include "compositor/meta-surface-actor-x11.h"
 | 
			
		||||
#include "compositor/meta-surface-actor.h"
 | 
			
		||||
#include "compositor/meta-window-actor-private.h"
 | 
			
		||||
@@ -84,7 +83,7 @@ typedef struct _MetaWindowActorPrivate
 | 
			
		||||
 | 
			
		||||
  int geometry_scale;
 | 
			
		||||
 | 
			
		||||
  gulong            size_changed_id;
 | 
			
		||||
  guint             size_changed_id;
 | 
			
		||||
 | 
			
		||||
  /*
 | 
			
		||||
   * These need to be counters rather than flags, since more plugins
 | 
			
		||||
@@ -387,16 +386,7 @@ meta_window_actor_real_assign_surface_actor (MetaWindowActor  *self,
 | 
			
		||||
  MetaWindowActorPrivate *priv =
 | 
			
		||||
    meta_window_actor_get_instance_private (self);
 | 
			
		||||
 | 
			
		||||
  if (priv->surface)
 | 
			
		||||
    {
 | 
			
		||||
      g_warn_if_fail (priv->window->client_type == META_WINDOW_CLIENT_TYPE_X11 &&
 | 
			
		||||
                      meta_is_wayland_compositor ());
 | 
			
		||||
 | 
			
		||||
      g_clear_signal_handler (&priv->size_changed_id, priv->surface);
 | 
			
		||||
      clutter_actor_remove_child (CLUTTER_ACTOR (self),
 | 
			
		||||
                                  CLUTTER_ACTOR (priv->surface));
 | 
			
		||||
      g_clear_object (&priv->surface);
 | 
			
		||||
    }
 | 
			
		||||
  g_assert (!priv->surface);
 | 
			
		||||
 | 
			
		||||
  priv->surface = g_object_ref_sink (surface_actor);
 | 
			
		||||
  priv->size_changed_id = g_signal_connect (priv->surface, "size-changed",
 | 
			
		||||
@@ -501,7 +491,7 @@ meta_window_actor_dispose (GObject *object)
 | 
			
		||||
 | 
			
		||||
  if (priv->surface)
 | 
			
		||||
    {
 | 
			
		||||
      g_clear_signal_handler (&priv->size_changed_id, priv->surface);
 | 
			
		||||
      g_signal_handler_disconnect (priv->surface, priv->size_changed_id);
 | 
			
		||||
      clutter_actor_remove_child (CLUTTER_ACTOR (self),
 | 
			
		||||
                                  CLUTTER_ACTOR (priv->surface));
 | 
			
		||||
      g_clear_object (&priv->surface);
 | 
			
		||||
@@ -2143,19 +2133,6 @@ meta_window_actor_notify_damaged (MetaWindowActor *window_actor)
 | 
			
		||||
  g_signal_emit (window_actor, signals[DAMAGED], 0);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * meta_window_actor_get_image:
 | 
			
		||||
 * @self: A #MetaWindowActor
 | 
			
		||||
 * @clip: (nullable): A clipping rectangle, to help prevent extra processing.
 | 
			
		||||
 * In the case that the clipping rectangle is partially or fully
 | 
			
		||||
 * outside the bounds of the actor, the rectangle will be clipped.
 | 
			
		||||
 *
 | 
			
		||||
 * Flattens the layers of @self into one ARGB32 image by alpha blending
 | 
			
		||||
 * the images, and returns the flattened image.
 | 
			
		||||
 *
 | 
			
		||||
 * Returns: (nullable) (transfer full): a new cairo surface to be freed with
 | 
			
		||||
 * cairo_surface_destroy().
 | 
			
		||||
 */
 | 
			
		||||
cairo_surface_t *
 | 
			
		||||
meta_window_actor_get_image (MetaWindowActor *self,
 | 
			
		||||
                             MetaRectangle   *clip)
 | 
			
		||||
@@ -2183,25 +2160,9 @@ meta_window_actor_get_image (MetaWindowActor *self,
 | 
			
		||||
  if (clutter_actor_get_n_children (actor) == 1)
 | 
			
		||||
    {
 | 
			
		||||
      MetaShapedTexture *stex;
 | 
			
		||||
      MetaRectangle *surface_clip = NULL;
 | 
			
		||||
 | 
			
		||||
      if (clip)
 | 
			
		||||
        {
 | 
			
		||||
 | 
			
		||||
          int geometry_scale;
 | 
			
		||||
 | 
			
		||||
          geometry_scale =
 | 
			
		||||
            meta_window_actor_get_geometry_scale (self);
 | 
			
		||||
 | 
			
		||||
          surface_clip = g_alloca (sizeof (MetaRectangle));
 | 
			
		||||
          surface_clip->x = clip->x / geometry_scale,
 | 
			
		||||
          surface_clip->y = clip->y / geometry_scale;
 | 
			
		||||
          surface_clip->width = clip->width / geometry_scale;
 | 
			
		||||
          surface_clip->height = clip->height / geometry_scale;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
      stex = meta_surface_actor_get_texture (priv->surface);
 | 
			
		||||
      return meta_shaped_texture_get_image (stex, surface_clip);
 | 
			
		||||
      return meta_shaped_texture_get_image (stex, clip);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
  clutter_actor_get_size (actor, &width, &height);
 | 
			
		||||
 
 | 
			
		||||
@@ -28,7 +28,6 @@
 | 
			
		||||
#include <string.h>
 | 
			
		||||
 | 
			
		||||
#include "clutter/clutter.h"
 | 
			
		||||
#include "meta/meta-backend.h"
 | 
			
		||||
#include "meta/meta-background-actor.h"
 | 
			
		||||
#include "meta/meta-background-group.h"
 | 
			
		||||
#include "meta/meta-monitor-manager.h"
 | 
			
		||||
@@ -370,67 +369,6 @@ on_monitors_changed (MetaMonitorManager *monitor_manager,
 | 
			
		||||
  g_rand_free (rand);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static void
 | 
			
		||||
init_keymap (MetaDefaultPlugin *self)
 | 
			
		||||
{
 | 
			
		||||
  g_autoptr (GError) error = NULL;
 | 
			
		||||
  g_autoptr (GDBusProxy) proxy = NULL;
 | 
			
		||||
  g_autoptr (GVariant) result = NULL;
 | 
			
		||||
  g_autoptr (GVariant) props = NULL;
 | 
			
		||||
  g_autofree char *x11_layout = NULL;
 | 
			
		||||
  g_autofree char *x11_options = NULL;
 | 
			
		||||
  g_autofree char *x11_variant = NULL;
 | 
			
		||||
 | 
			
		||||
  proxy = g_dbus_proxy_new_for_bus_sync (G_BUS_TYPE_SYSTEM,
 | 
			
		||||
                                         G_DBUS_PROXY_FLAGS_NONE,
 | 
			
		||||
                                         NULL,
 | 
			
		||||
                                         "org.freedesktop.locale1",
 | 
			
		||||
                                         "/org/freedesktop/locale1",
 | 
			
		||||
                                         "org.freedesktop.DBus.Properties",
 | 
			
		||||
                                         NULL,
 | 
			
		||||
                                         &error);
 | 
			
		||||
  if (!proxy)
 | 
			
		||||
    {
 | 
			
		||||
      g_message ("Failed to acquire org.freedesktop.locale1 proxy: %s, "
 | 
			
		||||
                 "probably running in CI",
 | 
			
		||||
                 error->message);
 | 
			
		||||
      return;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
  result = g_dbus_proxy_call_sync (proxy,
 | 
			
		||||
                                   "GetAll",
 | 
			
		||||
                                   g_variant_new ("(s)",
 | 
			
		||||
                                                  "org.freedesktop.locale1"),
 | 
			
		||||
                                   G_DBUS_CALL_FLAGS_NONE,
 | 
			
		||||
                                   100,
 | 
			
		||||
                                   NULL,
 | 
			
		||||
                                   &error);
 | 
			
		||||
  if (!result)
 | 
			
		||||
    {
 | 
			
		||||
      g_warning ("Failed to retrieve locale properties: %s", error->message);
 | 
			
		||||
      return;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
  props = g_variant_get_child_value (result, 0);
 | 
			
		||||
  if (!props)
 | 
			
		||||
    {
 | 
			
		||||
      g_warning ("No locale properties found");
 | 
			
		||||
      return;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
  if (!g_variant_lookup (props, "X11Layout", "s", &x11_layout))
 | 
			
		||||
    x11_layout = g_strdup ("us");
 | 
			
		||||
 | 
			
		||||
  if (!g_variant_lookup (props, "X11Options", "s", &x11_options))
 | 
			
		||||
    x11_options = g_strdup ("");
 | 
			
		||||
 | 
			
		||||
  if (!g_variant_lookup (props, "X11Variant", "s", &x11_variant))
 | 
			
		||||
    x11_variant = g_strdup ("");
 | 
			
		||||
 | 
			
		||||
  meta_backend_set_keymap (meta_get_backend (),
 | 
			
		||||
                           x11_layout, x11_variant, x11_options);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static void
 | 
			
		||||
start (MetaPlugin *plugin)
 | 
			
		||||
{
 | 
			
		||||
@@ -447,9 +385,6 @@ start (MetaPlugin *plugin)
 | 
			
		||||
 | 
			
		||||
  on_monitors_changed (monitor_manager, plugin);
 | 
			
		||||
 | 
			
		||||
  if (meta_is_wayland_compositor ())
 | 
			
		||||
    init_keymap (self);
 | 
			
		||||
 | 
			
		||||
  clutter_actor_show (meta_get_stage_for_display (display));
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@@ -590,7 +525,6 @@ minimize (MetaPlugin *plugin, MetaWindowActor *window_actor)
 | 
			
		||||
  MetaWindowType type;
 | 
			
		||||
  MetaRectangle icon_geometry;
 | 
			
		||||
  MetaWindow *meta_window = meta_window_actor_get_meta_window (window_actor);
 | 
			
		||||
  ClutterTimeline *timeline = NULL;
 | 
			
		||||
  ClutterActor *actor  = CLUTTER_ACTOR (window_actor);
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@@ -603,28 +537,24 @@ minimize (MetaPlugin *plugin, MetaWindowActor *window_actor)
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
  if (type == META_WINDOW_NORMAL)
 | 
			
		||||
    {
 | 
			
		||||
      timeline = actor_animate (actor,
 | 
			
		||||
                                CLUTTER_EASE_IN_SINE,
 | 
			
		||||
                                MINIMIZE_TIMEOUT,
 | 
			
		||||
                                "scale-x", 0.0,
 | 
			
		||||
                                "scale-y", 0.0,
 | 
			
		||||
                                "x", (double)icon_geometry.x,
 | 
			
		||||
                                "y", (double)icon_geometry.y,
 | 
			
		||||
                                NULL);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
  if (timeline)
 | 
			
		||||
    {
 | 
			
		||||
      EffectCompleteData *data = g_new0 (EffectCompleteData, 1);
 | 
			
		||||
      ActorPrivate *apriv = get_actor_private (window_actor);
 | 
			
		||||
 | 
			
		||||
      apriv->tml_minimize = timeline;
 | 
			
		||||
      apriv->tml_minimize = actor_animate (actor,
 | 
			
		||||
                                           CLUTTER_EASE_IN_SINE,
 | 
			
		||||
                                           MINIMIZE_TIMEOUT,
 | 
			
		||||
                                           "scale-x", 0.0,
 | 
			
		||||
                                           "scale-y", 0.0,
 | 
			
		||||
                                           "x", (double)icon_geometry.x,
 | 
			
		||||
                                           "y", (double)icon_geometry.y,
 | 
			
		||||
                                           NULL);
 | 
			
		||||
      data->plugin = plugin;
 | 
			
		||||
      data->actor = actor;
 | 
			
		||||
      g_signal_connect (apriv->tml_minimize, "completed",
 | 
			
		||||
                        G_CALLBACK (on_minimize_effect_complete),
 | 
			
		||||
                        data);
 | 
			
		||||
 | 
			
		||||
    }
 | 
			
		||||
  else
 | 
			
		||||
    meta_plugin_minimize_completed (plugin, window_actor);
 | 
			
		||||
@@ -713,27 +643,21 @@ destroy (MetaPlugin *plugin, MetaWindowActor *window_actor)
 | 
			
		||||
  MetaWindowType type;
 | 
			
		||||
  ClutterActor *actor = CLUTTER_ACTOR (window_actor);
 | 
			
		||||
  MetaWindow *meta_window = meta_window_actor_get_meta_window (window_actor);
 | 
			
		||||
  ClutterTimeline *timeline = NULL;
 | 
			
		||||
 | 
			
		||||
  type = meta_window_get_window_type (meta_window);
 | 
			
		||||
 | 
			
		||||
  if (type == META_WINDOW_NORMAL)
 | 
			
		||||
    {
 | 
			
		||||
      timeline = actor_animate (actor,
 | 
			
		||||
                                CLUTTER_EASE_OUT_QUAD,
 | 
			
		||||
                                DESTROY_TIMEOUT,
 | 
			
		||||
                                "opacity", 0,
 | 
			
		||||
                                "scale-x", 0.8,
 | 
			
		||||
                                "scale-y", 0.8,
 | 
			
		||||
                                NULL);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
  if (timeline)
 | 
			
		||||
    {
 | 
			
		||||
      EffectCompleteData *data = g_new0 (EffectCompleteData, 1);
 | 
			
		||||
      ActorPrivate *apriv = get_actor_private (window_actor);
 | 
			
		||||
 | 
			
		||||
      apriv->tml_destroy = timeline;
 | 
			
		||||
      apriv->tml_destroy = actor_animate (actor,
 | 
			
		||||
                                          CLUTTER_EASE_OUT_QUAD,
 | 
			
		||||
                                          DESTROY_TIMEOUT,
 | 
			
		||||
                                          "opacity", 0,
 | 
			
		||||
                                          "scale-x", 0.8,
 | 
			
		||||
                                          "scale-y", 0.8,
 | 
			
		||||
                                          NULL);
 | 
			
		||||
      data->plugin = plugin;
 | 
			
		||||
      data->actor = actor;
 | 
			
		||||
      g_signal_connect (apriv->tml_destroy, "completed",
 | 
			
		||||
@@ -748,8 +672,9 @@ destroy (MetaPlugin *plugin, MetaWindowActor *window_actor)
 | 
			
		||||
 * Tile preview private data accessor
 | 
			
		||||
 */
 | 
			
		||||
static void
 | 
			
		||||
free_display_tile_preview (DisplayTilePreview *preview)
 | 
			
		||||
free_display_tile_preview (gpointer data)
 | 
			
		||||
{
 | 
			
		||||
  DisplayTilePreview *preview = data;
 | 
			
		||||
 | 
			
		||||
  if (G_LIKELY (preview != NULL)) {
 | 
			
		||||
    clutter_actor_destroy (preview->actor);
 | 
			
		||||
@@ -757,27 +682,15 @@ free_display_tile_preview (DisplayTilePreview *preview)
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static void
 | 
			
		||||
on_display_closing (MetaDisplay        *display,
 | 
			
		||||
                    DisplayTilePreview *preview)
 | 
			
		||||
{
 | 
			
		||||
  free_display_tile_preview (preview);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static DisplayTilePreview *
 | 
			
		||||
get_display_tile_preview (MetaDisplay *display)
 | 
			
		||||
{
 | 
			
		||||
  DisplayTilePreview *preview;
 | 
			
		||||
  DisplayTilePreview *preview = g_object_get_qdata (G_OBJECT (display), display_tile_preview_data_quark);
 | 
			
		||||
 | 
			
		||||
  if (!display_tile_preview_data_quark)
 | 
			
		||||
    {
 | 
			
		||||
      display_tile_preview_data_quark =
 | 
			
		||||
        g_quark_from_static_string (DISPLAY_TILE_PREVIEW_DATA_KEY);
 | 
			
		||||
    }
 | 
			
		||||
  if (G_UNLIKELY (display_tile_preview_data_quark == 0))
 | 
			
		||||
    display_tile_preview_data_quark = g_quark_from_static_string (DISPLAY_TILE_PREVIEW_DATA_KEY);
 | 
			
		||||
 | 
			
		||||
  preview = g_object_get_qdata (G_OBJECT (display),
 | 
			
		||||
                                display_tile_preview_data_quark);
 | 
			
		||||
  if (!preview)
 | 
			
		||||
  if (G_UNLIKELY (!preview))
 | 
			
		||||
    {
 | 
			
		||||
      preview = g_slice_new0 (DisplayTilePreview);
 | 
			
		||||
 | 
			
		||||
@@ -786,13 +699,9 @@ get_display_tile_preview (MetaDisplay *display)
 | 
			
		||||
      clutter_actor_set_opacity (preview->actor, 100);
 | 
			
		||||
 | 
			
		||||
      clutter_actor_add_child (meta_get_window_group_for_display (display), preview->actor);
 | 
			
		||||
      g_signal_connect (display,
 | 
			
		||||
                        "closing",
 | 
			
		||||
                        G_CALLBACK (on_display_closing),
 | 
			
		||||
                        preview);
 | 
			
		||||
      g_object_set_qdata (G_OBJECT (display),
 | 
			
		||||
                          display_tile_preview_data_quark,
 | 
			
		||||
                          preview);
 | 
			
		||||
      g_object_set_qdata_full (G_OBJECT (display),
 | 
			
		||||
                               display_tile_preview_data_quark, preview,
 | 
			
		||||
                               free_display_tile_preview);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
  return preview;
 | 
			
		||||
@@ -837,15 +746,6 @@ hide_tile_preview (MetaPlugin *plugin)
 | 
			
		||||
  clutter_actor_hide (preview->actor);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static void
 | 
			
		||||
finish_timeline (ClutterTimeline *timeline)
 | 
			
		||||
{
 | 
			
		||||
  g_object_ref (timeline);
 | 
			
		||||
  clutter_timeline_stop (timeline);
 | 
			
		||||
  g_signal_emit_by_name (timeline, "completed", NULL);
 | 
			
		||||
  g_object_unref (timeline);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static void
 | 
			
		||||
kill_switch_workspace (MetaPlugin     *plugin)
 | 
			
		||||
{
 | 
			
		||||
@@ -853,11 +753,9 @@ kill_switch_workspace (MetaPlugin     *plugin)
 | 
			
		||||
 | 
			
		||||
  if (priv->tml_switch_workspace1)
 | 
			
		||||
    {
 | 
			
		||||
      g_object_ref (priv->tml_switch_workspace1);
 | 
			
		||||
      clutter_timeline_stop (priv->tml_switch_workspace1);
 | 
			
		||||
      clutter_timeline_stop (priv->tml_switch_workspace2);
 | 
			
		||||
      g_signal_emit_by_name (priv->tml_switch_workspace1, "completed", NULL);
 | 
			
		||||
      g_object_unref (priv->tml_switch_workspace1);
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@@ -870,13 +768,22 @@ kill_window_effects (MetaPlugin      *plugin,
 | 
			
		||||
  apriv = get_actor_private (window_actor);
 | 
			
		||||
 | 
			
		||||
  if (apriv->tml_minimize)
 | 
			
		||||
    finish_timeline (apriv->tml_minimize);
 | 
			
		||||
    {
 | 
			
		||||
      clutter_timeline_stop (apriv->tml_minimize);
 | 
			
		||||
      g_signal_emit_by_name (apriv->tml_minimize, "completed", NULL);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
  if (apriv->tml_map)
 | 
			
		||||
    finish_timeline (apriv->tml_map);
 | 
			
		||||
    {
 | 
			
		||||
      clutter_timeline_stop (apriv->tml_map);
 | 
			
		||||
      g_signal_emit_by_name (apriv->tml_map, "completed", NULL);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
  if (apriv->tml_destroy)
 | 
			
		||||
    finish_timeline (apriv->tml_destroy);
 | 
			
		||||
    {
 | 
			
		||||
      clutter_timeline_stop (apriv->tml_destroy);
 | 
			
		||||
      g_signal_emit_by_name (apriv->tml_destroy, "completed", NULL);
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static const MetaPluginInfo *
 | 
			
		||||
 
 | 
			
		||||
@@ -40,7 +40,6 @@
 | 
			
		||||
#include <X11/extensions/Xdamage.h>
 | 
			
		||||
#include <X11/extensions/Xfixes.h>
 | 
			
		||||
 | 
			
		||||
#include "backends/meta-backend-private.h"
 | 
			
		||||
#include "backends/meta-cursor-sprite-xcursor.h"
 | 
			
		||||
#include "backends/meta-cursor-tracker-private.h"
 | 
			
		||||
#include "backends/meta-idle-monitor-dbus.h"
 | 
			
		||||
@@ -53,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"
 | 
			
		||||
@@ -127,7 +125,6 @@ G_DEFINE_TYPE(MetaDisplay, meta_display, G_TYPE_OBJECT);
 | 
			
		||||
enum
 | 
			
		||||
{
 | 
			
		||||
  CURSOR_UPDATED,
 | 
			
		||||
  X11_DISPLAY_SETUP,
 | 
			
		||||
  X11_DISPLAY_OPENED,
 | 
			
		||||
  X11_DISPLAY_CLOSING,
 | 
			
		||||
  OVERLAY_KEY,
 | 
			
		||||
@@ -156,7 +153,6 @@ enum
 | 
			
		||||
  SHOWING_DESKTOP_CHANGED,
 | 
			
		||||
  RESTACKED,
 | 
			
		||||
  WORKAREAS_CHANGED,
 | 
			
		||||
  CLOSING,
 | 
			
		||||
  LAST_SIGNAL
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
@@ -235,14 +231,6 @@ meta_display_class_init (MetaDisplayClass *klass)
 | 
			
		||||
                  NULL, NULL, NULL,
 | 
			
		||||
                  G_TYPE_NONE, 0);
 | 
			
		||||
 | 
			
		||||
  display_signals[X11_DISPLAY_SETUP] =
 | 
			
		||||
    g_signal_new ("x11-display-setup",
 | 
			
		||||
                  G_TYPE_FROM_CLASS (klass),
 | 
			
		||||
                  G_SIGNAL_RUN_LAST,
 | 
			
		||||
                  0,
 | 
			
		||||
                  NULL, NULL, NULL,
 | 
			
		||||
                  G_TYPE_NONE, 0);
 | 
			
		||||
 | 
			
		||||
  display_signals[X11_DISPLAY_OPENED] =
 | 
			
		||||
    g_signal_new ("x11-display-opened",
 | 
			
		||||
                  G_TYPE_FROM_CLASS (klass),
 | 
			
		||||
@@ -494,12 +482,6 @@ meta_display_class_init (MetaDisplayClass *klass)
 | 
			
		||||
                  G_SIGNAL_RUN_LAST,
 | 
			
		||||
                  0, NULL, NULL, NULL,
 | 
			
		||||
                  G_TYPE_NONE, 0);
 | 
			
		||||
  display_signals[CLOSING] =
 | 
			
		||||
    g_signal_new ("closing",
 | 
			
		||||
                  G_TYPE_FROM_CLASS (klass),
 | 
			
		||||
                  G_SIGNAL_RUN_LAST,
 | 
			
		||||
                  0, NULL, NULL, NULL,
 | 
			
		||||
                  G_TYPE_NONE, 0);
 | 
			
		||||
 | 
			
		||||
  g_object_class_install_property (object_class,
 | 
			
		||||
                                   PROP_FOCUS_WINDOW,
 | 
			
		||||
@@ -630,23 +612,27 @@ gesture_tracker_state_changed (MetaGestureTracker   *tracker,
 | 
			
		||||
                               MetaSequenceState     state,
 | 
			
		||||
                               MetaDisplay          *display)
 | 
			
		||||
{
 | 
			
		||||
  switch (state)
 | 
			
		||||
  if (meta_is_wayland_compositor ())
 | 
			
		||||
    {
 | 
			
		||||
    case META_SEQUENCE_NONE:
 | 
			
		||||
    case META_SEQUENCE_PENDING_END:
 | 
			
		||||
      return;
 | 
			
		||||
    case META_SEQUENCE_ACCEPTED:
 | 
			
		||||
      meta_display_cancel_touch (display);
 | 
			
		||||
      if (state == META_SEQUENCE_ACCEPTED)
 | 
			
		||||
        meta_display_cancel_touch (display);
 | 
			
		||||
    }
 | 
			
		||||
  else
 | 
			
		||||
    {
 | 
			
		||||
      MetaBackendX11 *backend = META_BACKEND_X11 (meta_get_backend ());
 | 
			
		||||
      int event_mode;
 | 
			
		||||
 | 
			
		||||
      /* Intentional fall-through */
 | 
			
		||||
    case META_SEQUENCE_REJECTED:
 | 
			
		||||
      {
 | 
			
		||||
        MetaBackend *backend;
 | 
			
		||||
      if (state == META_SEQUENCE_ACCEPTED)
 | 
			
		||||
        event_mode = XIAcceptTouch;
 | 
			
		||||
      else if (state == META_SEQUENCE_REJECTED)
 | 
			
		||||
        event_mode = XIRejectTouch;
 | 
			
		||||
      else
 | 
			
		||||
        return;
 | 
			
		||||
 | 
			
		||||
        backend = meta_get_backend ();
 | 
			
		||||
        meta_backend_finish_touch_sequence (backend, sequence, state);
 | 
			
		||||
        break;
 | 
			
		||||
      }
 | 
			
		||||
      XIAllowTouchEvents (meta_backend_x11_get_xdisplay (backend),
 | 
			
		||||
                          META_VIRTUAL_CORE_POINTER_ID,
 | 
			
		||||
                          meta_x11_event_sequence_get_touch_detail (sequence),
 | 
			
		||||
                          DefaultRootWindow (display->x11_display->xdisplay), event_mode);
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@@ -670,13 +656,12 @@ meta_display_init_x11 (MetaDisplay  *display,
 | 
			
		||||
    return FALSE;
 | 
			
		||||
 | 
			
		||||
  display->x11_display = x11_display;
 | 
			
		||||
  g_signal_emit (display, display_signals[X11_DISPLAY_SETUP], 0);
 | 
			
		||||
  g_signal_emit (display, display_signals[X11_DISPLAY_OPENED], 0);
 | 
			
		||||
 | 
			
		||||
  meta_x11_display_create_guard_window (x11_display);
 | 
			
		||||
 | 
			
		||||
  if (!display->display_opening)
 | 
			
		||||
    {
 | 
			
		||||
      g_signal_emit (display, display_signals[X11_DISPLAY_OPENED], 0);
 | 
			
		||||
      meta_display_manage_all_xwindows (display);
 | 
			
		||||
      meta_compositor_redirect_x11_windows (display->compositor);
 | 
			
		||||
    }
 | 
			
		||||
@@ -817,7 +802,6 @@ meta_display_open (void)
 | 
			
		||||
 | 
			
		||||
  if (display->x11_display)
 | 
			
		||||
    {
 | 
			
		||||
      g_signal_emit (display, display_signals[X11_DISPLAY_OPENED], 0);
 | 
			
		||||
      meta_x11_display_restore_active_workspace (display->x11_display);
 | 
			
		||||
      meta_x11_display_create_guard_window (display->x11_display);
 | 
			
		||||
    }
 | 
			
		||||
@@ -978,8 +962,6 @@ meta_display_close (MetaDisplay *display,
 | 
			
		||||
 | 
			
		||||
  display->closing += 1;
 | 
			
		||||
 | 
			
		||||
  g_signal_emit (display, display_signals[CLOSING], 0);
 | 
			
		||||
 | 
			
		||||
  meta_compositor_unmanage (display->compositor);
 | 
			
		||||
 | 
			
		||||
  meta_display_unmanage_windows (display, timestamp);
 | 
			
		||||
@@ -1378,8 +1360,23 @@ meta_display_set_input_focus (MetaDisplay *display,
 | 
			
		||||
 | 
			
		||||
  if (display->x11_display)
 | 
			
		||||
    {
 | 
			
		||||
      meta_x11_display_set_input_focus (display->x11_display, window,
 | 
			
		||||
                                        focus_frame, timestamp);
 | 
			
		||||
      MetaX11Display *x11_display = display->x11_display;
 | 
			
		||||
      Window xwindow;
 | 
			
		||||
      gulong serial;
 | 
			
		||||
 | 
			
		||||
      meta_x11_error_trap_push (x11_display);
 | 
			
		||||
 | 
			
		||||
      if (window)
 | 
			
		||||
        xwindow = focus_frame ? window->frame->xwindow : window->xwindow;
 | 
			
		||||
      else
 | 
			
		||||
        xwindow = x11_display->no_focus_window;
 | 
			
		||||
 | 
			
		||||
      meta_x11_display_set_input_focus (x11_display, xwindow, timestamp);
 | 
			
		||||
      serial = XNextRequest (x11_display->xdisplay);
 | 
			
		||||
 | 
			
		||||
      meta_x11_display_update_focus_window (x11_display, xwindow, serial, TRUE);
 | 
			
		||||
 | 
			
		||||
      meta_x11_error_trap_pop (display->x11_display);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
  meta_display_update_focus_window (display, window);
 | 
			
		||||
@@ -1484,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);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -50,12 +50,6 @@
 | 
			
		||||
#define IS_KEY_EVENT(e) ((e)->type == CLUTTER_KEY_PRESS || \
 | 
			
		||||
                         (e)->type == CLUTTER_KEY_RELEASE)
 | 
			
		||||
 | 
			
		||||
typedef enum
 | 
			
		||||
{
 | 
			
		||||
  EVENTS_UNFREEZE_SYNC,
 | 
			
		||||
  EVENTS_UNFREEZE_REPLAY,
 | 
			
		||||
} EventsUnfreezeMethod;
 | 
			
		||||
 | 
			
		||||
static gboolean
 | 
			
		||||
stage_has_key_focus (void)
 | 
			
		||||
{
 | 
			
		||||
@@ -175,43 +169,6 @@ sequence_is_pointer_emulated (MetaDisplay        *display,
 | 
			
		||||
  return FALSE;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static void
 | 
			
		||||
maybe_unfreeze_pointer_events (MetaBackend          *backend,
 | 
			
		||||
                               const ClutterEvent   *event,
 | 
			
		||||
                               EventsUnfreezeMethod  unfreeze_method)
 | 
			
		||||
{
 | 
			
		||||
  Display *xdisplay;
 | 
			
		||||
  int event_mode;
 | 
			
		||||
  int device_id;
 | 
			
		||||
 | 
			
		||||
  if (event->type != CLUTTER_BUTTON_PRESS)
 | 
			
		||||
    return;
 | 
			
		||||
 | 
			
		||||
  if (!META_IS_BACKEND_X11 (backend))
 | 
			
		||||
    return;
 | 
			
		||||
 | 
			
		||||
  device_id = clutter_event_get_device_id (event);
 | 
			
		||||
  switch (unfreeze_method)
 | 
			
		||||
    {
 | 
			
		||||
    case EVENTS_UNFREEZE_SYNC:
 | 
			
		||||
      event_mode = XISyncDevice;
 | 
			
		||||
      meta_verbose ("Syncing events time %u device %i\n",
 | 
			
		||||
                    (unsigned int) event->button.time, device_id);
 | 
			
		||||
      break;
 | 
			
		||||
    case EVENTS_UNFREEZE_REPLAY:
 | 
			
		||||
      event_mode = XIReplayDevice;
 | 
			
		||||
      meta_verbose ("Replaying events time %u device %i\n",
 | 
			
		||||
                    (unsigned int) event->button.time, device_id);
 | 
			
		||||
      break;
 | 
			
		||||
    default:
 | 
			
		||||
      g_assert_not_reached ();
 | 
			
		||||
      return;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
  xdisplay = meta_backend_x11_get_xdisplay (META_BACKEND_X11 (backend));
 | 
			
		||||
  XIAllowEvents (xdisplay, device_id, event_mode, event->button.time);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static gboolean
 | 
			
		||||
meta_display_handle_event (MetaDisplay        *display,
 | 
			
		||||
                           const ClutterEvent *event)
 | 
			
		||||
@@ -425,7 +382,17 @@ meta_display_handle_event (MetaDisplay        *display,
 | 
			
		||||
        {
 | 
			
		||||
          /* Only replay button press events, since that's where we
 | 
			
		||||
           * have the synchronous grab. */
 | 
			
		||||
          maybe_unfreeze_pointer_events (backend, event, EVENTS_UNFREEZE_REPLAY);
 | 
			
		||||
          if (event->type == CLUTTER_BUTTON_PRESS)
 | 
			
		||||
            {
 | 
			
		||||
              if (META_IS_BACKEND_X11 (backend))
 | 
			
		||||
                {
 | 
			
		||||
                  Display *xdisplay = meta_backend_x11_get_xdisplay (META_BACKEND_X11 (backend));
 | 
			
		||||
                  meta_verbose ("Allowing events time %u\n",
 | 
			
		||||
                                (unsigned int)event->button.time);
 | 
			
		||||
                  XIAllowEvents (xdisplay, clutter_event_get_device_id (event),
 | 
			
		||||
                                 XIReplayDevice, event->button.time);
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
          /* If the focus window has an active close dialog let clutter
 | 
			
		||||
           * events go through, so fancy clutter dialogs can get to handle
 | 
			
		||||
@@ -441,13 +408,6 @@ meta_display_handle_event (MetaDisplay        *display,
 | 
			
		||||
 | 
			
		||||
      goto out;
 | 
			
		||||
    }
 | 
			
		||||
  else
 | 
			
		||||
    {
 | 
			
		||||
      /* We could not match the event with a window, make sure we sync
 | 
			
		||||
       * the pointer to discard the sequence and don't keep events frozen.
 | 
			
		||||
       */
 | 
			
		||||
       maybe_unfreeze_pointer_events (backend, event, EVENTS_UNFREEZE_SYNC);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
 out:
 | 
			
		||||
  /* If the compositor has a grab, don't pass that through to Wayland */
 | 
			
		||||
 
 | 
			
		||||
@@ -1933,12 +1933,6 @@ invoke_handler (MetaDisplay     *display,
 | 
			
		||||
                               NULL);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static gboolean
 | 
			
		||||
meta_key_binding_has_handler_func (MetaKeyBinding *binding)
 | 
			
		||||
{
 | 
			
		||||
  return (!!binding->handler->func || !!binding->handler->default_func);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static gboolean
 | 
			
		||||
process_event (MetaDisplay          *display,
 | 
			
		||||
               MetaWindow           *window,
 | 
			
		||||
@@ -1961,12 +1955,6 @@ process_event (MetaDisplay          *display,
 | 
			
		||||
      (!window && binding->flags & META_KEY_BINDING_PER_WINDOW))
 | 
			
		||||
    goto not_found;
 | 
			
		||||
 | 
			
		||||
  if (binding->handler == NULL)
 | 
			
		||||
    meta_bug ("Binding %s has no handler\n", binding->name);
 | 
			
		||||
 | 
			
		||||
  if (!meta_key_binding_has_handler_func (binding))
 | 
			
		||||
    goto not_found;
 | 
			
		||||
 | 
			
		||||
  if (display->focus_window &&
 | 
			
		||||
      !(binding->handler->flags & META_KEY_BINDING_NON_MASKABLE))
 | 
			
		||||
    {
 | 
			
		||||
@@ -1992,9 +1980,12 @@ process_event (MetaDisplay          *display,
 | 
			
		||||
      return TRUE;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
  meta_topic (META_DEBUG_KEYBINDINGS,
 | 
			
		||||
              "Running handler for %s\n",
 | 
			
		||||
              binding->name);
 | 
			
		||||
  if (binding->handler == NULL)
 | 
			
		||||
    meta_bug ("Binding %s has no handler\n", binding->name);
 | 
			
		||||
  else
 | 
			
		||||
    meta_topic (META_DEBUG_KEYBINDINGS,
 | 
			
		||||
                "Running handler for %s\n",
 | 
			
		||||
                binding->name);
 | 
			
		||||
 | 
			
		||||
  /* Global keybindings count as a let-the-terminal-lose-focus
 | 
			
		||||
   * due to new window mapping until the user starts
 | 
			
		||||
 
 | 
			
		||||
@@ -70,10 +70,6 @@
 | 
			
		||||
#include <systemd/sd-login.h>
 | 
			
		||||
#endif /* HAVE_WAYLAND && HAVE_NATIVE_BACKEND */
 | 
			
		||||
 | 
			
		||||
#ifdef HAVE_SYS_PRCTL
 | 
			
		||||
#include <sys/prctl.h>
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#include "backends/meta-backend-private.h"
 | 
			
		||||
#include "backends/x11/cm/meta-backend-x11-cm.h"
 | 
			
		||||
#include "backends/x11/meta-backend-x11.h"
 | 
			
		||||
@@ -536,10 +532,6 @@ meta_init (void)
 | 
			
		||||
  MetaCompositorType compositor_type;
 | 
			
		||||
  GType backend_gtype;
 | 
			
		||||
 | 
			
		||||
#ifdef HAVE_SYS_PRCTL
 | 
			
		||||
  prctl (PR_SET_DUMPABLE, 1);
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
  sigemptyset (&empty_mask);
 | 
			
		||||
  act.sa_handler = SIG_IGN;
 | 
			
		||||
  act.sa_mask    = empty_mask;
 | 
			
		||||
@@ -766,6 +758,6 @@ meta_test_init (void)
 | 
			
		||||
 | 
			
		||||
  close (fd);
 | 
			
		||||
#else
 | 
			
		||||
  g_warning ("Tests require wayland support");
 | 
			
		||||
  g_error ("Tests require wayland support");
 | 
			
		||||
#endif
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -26,7 +26,6 @@
 | 
			
		||||
 | 
			
		||||
#include <glib-object.h>
 | 
			
		||||
 | 
			
		||||
#include "backends/meta-backend-private.h"
 | 
			
		||||
#include "clutter/clutter.h"
 | 
			
		||||
#include "meta/window.h"
 | 
			
		||||
 | 
			
		||||
@@ -40,6 +39,14 @@
 | 
			
		||||
typedef struct _MetaGestureTracker MetaGestureTracker;
 | 
			
		||||
typedef struct _MetaGestureTrackerClass MetaGestureTrackerClass;
 | 
			
		||||
 | 
			
		||||
typedef enum
 | 
			
		||||
{
 | 
			
		||||
  META_SEQUENCE_NONE,
 | 
			
		||||
  META_SEQUENCE_ACCEPTED,
 | 
			
		||||
  META_SEQUENCE_REJECTED,
 | 
			
		||||
  META_SEQUENCE_PENDING_END
 | 
			
		||||
} MetaSequenceState;
 | 
			
		||||
 | 
			
		||||
struct _MetaGestureTracker
 | 
			
		||||
{
 | 
			
		||||
  GObject parent_instance;
 | 
			
		||||
 
 | 
			
		||||
@@ -76,9 +76,6 @@ meta_selection_source_memory_get_mimetypes (MetaSelectionSource *source)
 | 
			
		||||
{
 | 
			
		||||
  MetaSelectionSourceMemory *source_mem = META_SELECTION_SOURCE_MEMORY (source);
 | 
			
		||||
 | 
			
		||||
  if (!source_mem->mimetype)
 | 
			
		||||
    return NULL;
 | 
			
		||||
 | 
			
		||||
  return g_list_prepend (NULL, g_strdup (source_mem->mimetype));
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@@ -87,7 +84,7 @@ meta_selection_source_memory_finalize (GObject *object)
 | 
			
		||||
{
 | 
			
		||||
  MetaSelectionSourceMemory *source_mem = META_SELECTION_SOURCE_MEMORY (object);
 | 
			
		||||
 | 
			
		||||
  g_clear_pointer (&source_mem->content, g_bytes_unref);
 | 
			
		||||
  g_bytes_unref (source_mem->content);
 | 
			
		||||
  g_free (source_mem->mimetype);
 | 
			
		||||
 | 
			
		||||
  G_OBJECT_CLASS (meta_selection_source_memory_parent_class)->finalize (object);
 | 
			
		||||
 
 | 
			
		||||
@@ -556,7 +556,7 @@ meta_stack_tracker_new (MetaDisplay *display)
 | 
			
		||||
  tracker->unverified_predictions = g_queue_new ();
 | 
			
		||||
 | 
			
		||||
  g_signal_connect (display,
 | 
			
		||||
                    "x11-display-setup",
 | 
			
		||||
                    "x11-display-opened",
 | 
			
		||||
                    G_CALLBACK (query_xserver_stack),
 | 
			
		||||
                    tracker);
 | 
			
		||||
  g_signal_connect (display,
 | 
			
		||||
 
 | 
			
		||||
@@ -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
 | 
			
		||||
@@ -858,11 +851,8 @@ static void
 | 
			
		||||
ensure_above (MetaWindow *above,
 | 
			
		||||
              MetaWindow *below)
 | 
			
		||||
{
 | 
			
		||||
  gboolean is_transient;
 | 
			
		||||
 | 
			
		||||
  is_transient = WINDOW_HAS_TRANSIENT_TYPE (above) ||
 | 
			
		||||
                 above->transient_for == below;
 | 
			
		||||
  if (is_transient && above->layer < below->layer)
 | 
			
		||||
  if (WINDOW_HAS_TRANSIENT_TYPE(above) &&
 | 
			
		||||
      above->layer < below->layer)
 | 
			
		||||
    {
 | 
			
		||||
      meta_topic (META_DEBUG_STACK,
 | 
			
		||||
		  "Promoting window %s from layer %u to %u due to contraint\n",
 | 
			
		||||
 
 | 
			
		||||
@@ -629,7 +629,6 @@ void        meta_window_unmanage           (MetaWindow  *window,
 | 
			
		||||
void        meta_window_unmanage_on_idle   (MetaWindow *window);
 | 
			
		||||
void        meta_window_queue              (MetaWindow  *window,
 | 
			
		||||
                                            guint queuebits);
 | 
			
		||||
META_EXPORT_TEST
 | 
			
		||||
void        meta_window_tile               (MetaWindow        *window,
 | 
			
		||||
                                            MetaTileMode       mode);
 | 
			
		||||
MetaTileMode meta_window_get_tile_mode     (MetaWindow        *window);
 | 
			
		||||
 
 | 
			
		||||
@@ -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);
 | 
			
		||||
@@ -1306,7 +1293,6 @@ _meta_window_shared_new (MetaDisplay         *display,
 | 
			
		||||
                      "Putting window %s on same workspace as parent %s\n",
 | 
			
		||||
                      window->desc, window->transient_for->desc);
 | 
			
		||||
 | 
			
		||||
          g_warn_if_fail (!window->transient_for->override_redirect);
 | 
			
		||||
          set_workspace_state (window,
 | 
			
		||||
                               should_be_on_all_workspaces (window->transient_for),
 | 
			
		||||
                               window->transient_for->workspace);
 | 
			
		||||
@@ -3193,10 +3179,7 @@ meta_window_tile (MetaWindow   *window,
 | 
			
		||||
 | 
			
		||||
  /* Don't do anything if no tiling is requested */
 | 
			
		||||
  if (window->tile_mode == META_TILE_NONE)
 | 
			
		||||
    {
 | 
			
		||||
      window->tile_monitor_number = -1;
 | 
			
		||||
      return;
 | 
			
		||||
    }
 | 
			
		||||
    return;
 | 
			
		||||
 | 
			
		||||
  if (window->tile_mode == META_TILE_MAXIMIZED)
 | 
			
		||||
    directions = META_MAXIMIZE_BOTH;
 | 
			
		||||
@@ -3927,16 +3910,11 @@ meta_window_update_for_monitors_changed (MetaWindow *window)
 | 
			
		||||
  if (!new)
 | 
			
		||||
    new = meta_monitor_manager_get_primary_logical_monitor (monitor_manager);
 | 
			
		||||
 | 
			
		||||
  if (window->tile_mode != META_TILE_NONE)
 | 
			
		||||
    {
 | 
			
		||||
      if (new)
 | 
			
		||||
        window->tile_monitor_number = new->number;
 | 
			
		||||
      else
 | 
			
		||||
        window->tile_monitor_number = -1;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
  if (new && old)
 | 
			
		||||
    {
 | 
			
		||||
      if (window->tile_mode != META_TILE_NONE)
 | 
			
		||||
        window->tile_monitor_number = new->number;
 | 
			
		||||
 | 
			
		||||
      /* This will eventually reach meta_window_update_monitor that
 | 
			
		||||
       * will send leave/enter-monitor events. The old != new monitor
 | 
			
		||||
       * check will always fail (due to the new logical_monitors set) so
 | 
			
		||||
@@ -4826,12 +4804,9 @@ set_workspace_state (MetaWindow    *window,
 | 
			
		||||
{
 | 
			
		||||
  MetaWorkspaceManager *workspace_manager = window->display->workspace_manager;
 | 
			
		||||
 | 
			
		||||
  /* If we're on all workspaces, then our new workspace must be NULL,
 | 
			
		||||
   * otherwise it must be set, unless we're unmanaging. */
 | 
			
		||||
  /* If we're on all workspaces, then our new workspace must be NULL. */
 | 
			
		||||
  if (on_all_workspaces)
 | 
			
		||||
    g_assert_null (workspace);
 | 
			
		||||
  else
 | 
			
		||||
    g_assert_true (window->unmanaging || workspace != NULL);
 | 
			
		||||
    g_assert (workspace == NULL);
 | 
			
		||||
 | 
			
		||||
  /* If this is an override-redirect window, ensure that the only
 | 
			
		||||
   * times we're setting the workspace state is either during construction
 | 
			
		||||
 
 | 
			
		||||
@@ -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);
 | 
			
		||||
 
 | 
			
		||||
@@ -317,6 +317,8 @@ mutter_sources = [
 | 
			
		||||
  'compositor/meta-texture-tower.h',
 | 
			
		||||
  'compositor/meta-window-actor.c',
 | 
			
		||||
  'compositor/meta-window-actor-private.h',
 | 
			
		||||
  'compositor/meta-window-actor-wayland.c',
 | 
			
		||||
  'compositor/meta-window-actor-wayland.h',
 | 
			
		||||
  'compositor/meta-window-actor-x11.c',
 | 
			
		||||
  'compositor/meta-window-actor-x11.h',
 | 
			
		||||
  'compositor/meta-window-group.c',
 | 
			
		||||
@@ -473,8 +475,6 @@ if have_wayland
 | 
			
		||||
  mutter_sources += [
 | 
			
		||||
    'compositor/meta-surface-actor-wayland.c',
 | 
			
		||||
    'compositor/meta-surface-actor-wayland.h',
 | 
			
		||||
    'compositor/meta-window-actor-wayland.c',
 | 
			
		||||
    'compositor/meta-window-actor-wayland.h',
 | 
			
		||||
    'compositor/meta-compositor-server.c',
 | 
			
		||||
    'compositor/meta-compositor-server.h',
 | 
			
		||||
    'wayland/meta-cursor-sprite-wayland.c',
 | 
			
		||||
 
 | 
			
		||||
@@ -62,11 +62,4 @@ META_EXPORT
 | 
			
		||||
void           meta_cursor_tracker_set_pointer_visible (MetaCursorTracker *tracker,
 | 
			
		||||
                                                        gboolean           visible);
 | 
			
		||||
 | 
			
		||||
META_EXPORT
 | 
			
		||||
gboolean       meta_cursor_tracker_get_keep_focus_while_hidden (MetaCursorTracker *tracker);
 | 
			
		||||
 | 
			
		||||
META_EXPORT
 | 
			
		||||
void           meta_cursor_tracker_set_keep_focus_while_hidden (MetaCursorTracker *tracker,
 | 
			
		||||
                                                                gboolean           keep_focus);
 | 
			
		||||
 | 
			
		||||
#endif
 | 
			
		||||
 
 | 
			
		||||
@@ -37,7 +37,7 @@ META_EXPORT
 | 
			
		||||
G_DECLARE_FINAL_TYPE (MetaShapedTexture,
 | 
			
		||||
                      meta_shaped_texture,
 | 
			
		||||
                      META, SHAPED_TEXTURE,
 | 
			
		||||
                      GObject)
 | 
			
		||||
                      ClutterActor)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
META_EXPORT
 | 
			
		||||
 
 | 
			
		||||
@@ -161,39 +161,15 @@ on_destroy (ClutterActor *actor,
 | 
			
		||||
{
 | 
			
		||||
  gboolean *destroy_called = data;
 | 
			
		||||
 | 
			
		||||
  g_assert_true (CLUTTER_IS_ACTOR (clutter_actor_get_parent (actor)));
 | 
			
		||||
 | 
			
		||||
  *destroy_called = TRUE;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static void
 | 
			
		||||
on_parent_set (ClutterActor *actor,
 | 
			
		||||
               ClutterActor *old_parent,
 | 
			
		||||
               gpointer      data)
 | 
			
		||||
{
 | 
			
		||||
  gboolean *parent_set_called = data;
 | 
			
		||||
 | 
			
		||||
  *parent_set_called = TRUE;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static void
 | 
			
		||||
on_notify (ClutterActor *actor,
 | 
			
		||||
           ClutterActor *old_parent,
 | 
			
		||||
           gpointer      data)
 | 
			
		||||
{
 | 
			
		||||
  gboolean *property_changed = data;
 | 
			
		||||
 | 
			
		||||
  *property_changed = TRUE;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static void
 | 
			
		||||
actor_destruction (void)
 | 
			
		||||
{
 | 
			
		||||
  ClutterActor *test = g_object_new (TEST_TYPE_DESTROY, NULL);
 | 
			
		||||
  ClutterActor *child = clutter_rectangle_new ();
 | 
			
		||||
  gboolean destroy_called = FALSE;
 | 
			
		||||
  gboolean parent_set_called = FALSE;
 | 
			
		||||
  gboolean property_changed = FALSE;
 | 
			
		||||
 | 
			
		||||
  g_object_ref_sink (test);
 | 
			
		||||
 | 
			
		||||
@@ -205,9 +181,6 @@ actor_destruction (void)
 | 
			
		||||
 | 
			
		||||
  clutter_actor_set_name (child, "Child");
 | 
			
		||||
  clutter_container_add_actor (CLUTTER_CONTAINER (test), child);
 | 
			
		||||
  g_signal_connect (child, "parent-set", G_CALLBACK (on_parent_set),
 | 
			
		||||
                    &parent_set_called);
 | 
			
		||||
  g_signal_connect (child, "notify", G_CALLBACK (on_notify), &property_changed);
 | 
			
		||||
  g_signal_connect (child, "destroy", G_CALLBACK (on_destroy), &destroy_called);
 | 
			
		||||
 | 
			
		||||
  if (g_test_verbose ())
 | 
			
		||||
@@ -215,8 +188,6 @@ actor_destruction (void)
 | 
			
		||||
 | 
			
		||||
  clutter_actor_destroy (test);
 | 
			
		||||
  g_assert (destroy_called);
 | 
			
		||||
  g_assert_false (parent_set_called);
 | 
			
		||||
  g_assert_false (property_changed);
 | 
			
		||||
  g_assert_null (child);
 | 
			
		||||
  g_assert_null (test);
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -131,7 +131,6 @@ stacking_tests = [
 | 
			
		||||
  'mixed-windows',
 | 
			
		||||
  'set-parent',
 | 
			
		||||
  'override-redirect',
 | 
			
		||||
  'set-override-redirect-parent',
 | 
			
		||||
  'set-parent-exported',
 | 
			
		||||
]
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -28,7 +28,6 @@
 | 
			
		||||
#include "backends/meta-monitor-config-migration.h"
 | 
			
		||||
#include "backends/meta-monitor-config-store.h"
 | 
			
		||||
#include "backends/meta-output.h"
 | 
			
		||||
#include "core/window-private.h"
 | 
			
		||||
#include "meta-backend-test.h"
 | 
			
		||||
#include "tests/meta-monitor-manager-test.h"
 | 
			
		||||
#include "tests/monitor-test-utils.h"
 | 
			
		||||
@@ -379,22 +378,15 @@ create_monitor_test_clients (void)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static void
 | 
			
		||||
check_test_client_state (TestClient *test_client)
 | 
			
		||||
check_monitor_test_clients_state (void)
 | 
			
		||||
{
 | 
			
		||||
  GError *error = NULL;
 | 
			
		||||
 | 
			
		||||
  if (!test_client_wait (test_client, &error))
 | 
			
		||||
    {
 | 
			
		||||
      g_error ("Failed to sync test client '%s': %s",
 | 
			
		||||
               test_client_get_id (test_client), error->message);
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
  if (!test_client_wait (wayland_monitor_test_client, &error))
 | 
			
		||||
    g_error ("Failed to sync Wayland test client: %s", error->message);
 | 
			
		||||
 | 
			
		||||
static void
 | 
			
		||||
check_monitor_test_clients_state (void)
 | 
			
		||||
{
 | 
			
		||||
  check_test_client_state (wayland_monitor_test_client);
 | 
			
		||||
  check_test_client_state (x11_monitor_test_client);
 | 
			
		||||
  if (!test_client_wait (x11_monitor_test_client, &error))
 | 
			
		||||
    g_error ("Failed to sync X11 test client: %s", error->message);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static void
 | 
			
		||||
@@ -5761,128 +5753,6 @@ meta_test_monitor_migrated_wiggle_discard (void)
 | 
			
		||||
    g_error ("Failed to remove test data output file: %s", error->message);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static gboolean
 | 
			
		||||
quit_main_loop (gpointer data)
 | 
			
		||||
{
 | 
			
		||||
  GMainLoop *loop = data;
 | 
			
		||||
 | 
			
		||||
  g_main_loop_quit (loop);
 | 
			
		||||
 | 
			
		||||
  return G_SOURCE_REMOVE;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static void
 | 
			
		||||
dispatch (void)
 | 
			
		||||
{
 | 
			
		||||
  GMainLoop *loop;
 | 
			
		||||
 | 
			
		||||
  loop = g_main_loop_new (NULL, FALSE);
 | 
			
		||||
  meta_later_add (META_LATER_BEFORE_REDRAW,
 | 
			
		||||
                  quit_main_loop,
 | 
			
		||||
                  loop,
 | 
			
		||||
                  NULL);
 | 
			
		||||
  g_main_loop_run (loop);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static TestClient *
 | 
			
		||||
create_test_window (const char *window_name)
 | 
			
		||||
{
 | 
			
		||||
  TestClient *test_client;
 | 
			
		||||
  static int client_count = 0;
 | 
			
		||||
  g_autofree char *client_name = NULL;
 | 
			
		||||
  g_autoptr (GError) error = NULL;
 | 
			
		||||
 | 
			
		||||
  client_name = g_strdup_printf ("test_client_%d", client_count++);
 | 
			
		||||
  test_client = test_client_new (client_name, META_WINDOW_CLIENT_TYPE_WAYLAND,
 | 
			
		||||
                                 &error);
 | 
			
		||||
  if (!test_client)
 | 
			
		||||
    g_error ("Failed to launch test client: %s", error->message);
 | 
			
		||||
 | 
			
		||||
  if (!test_client_do (test_client, &error,
 | 
			
		||||
                       "create", window_name,
 | 
			
		||||
                       NULL))
 | 
			
		||||
    g_error ("Failed to create window: %s", error->message);
 | 
			
		||||
 | 
			
		||||
  return test_client;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static void
 | 
			
		||||
meta_test_monitor_wm_tiling (void)
 | 
			
		||||
{
 | 
			
		||||
  MonitorTestCase test_case = initial_test_case;
 | 
			
		||||
  MetaMonitorTestSetup *test_setup;
 | 
			
		||||
  g_autoptr (GError) error = NULL;
 | 
			
		||||
 | 
			
		||||
  test_setup = create_monitor_test_setup (&test_case,
 | 
			
		||||
                                          MONITOR_TEST_FLAG_NO_STORED);
 | 
			
		||||
  emulate_hotplug (test_setup);
 | 
			
		||||
 | 
			
		||||
  /*
 | 
			
		||||
   * 1) Start with two monitors connected.
 | 
			
		||||
   * 2) Tile it on the second monitor.
 | 
			
		||||
   * 3) Unplug both monitors.
 | 
			
		||||
   * 4) Replug in first monitor.
 | 
			
		||||
   */
 | 
			
		||||
 | 
			
		||||
  const char *test_window_name= "window1";
 | 
			
		||||
  TestClient *test_client = create_test_window (test_window_name);
 | 
			
		||||
 | 
			
		||||
  if (!test_client_do (test_client, &error,
 | 
			
		||||
                       "show", test_window_name,
 | 
			
		||||
                       NULL))
 | 
			
		||||
    g_error ("Failed to show the window: %s", error->message);
 | 
			
		||||
 | 
			
		||||
  MetaWindow *test_window =
 | 
			
		||||
    test_client_find_window (test_client,
 | 
			
		||||
                             test_window_name,
 | 
			
		||||
                             &error);
 | 
			
		||||
  if (!test_window)
 | 
			
		||||
    g_error ("Failed to find the window: %s", error->message);
 | 
			
		||||
  test_client_wait_for_window_shown (test_client, test_window);
 | 
			
		||||
 | 
			
		||||
  meta_window_tile (test_window, META_TILE_MAXIMIZED);
 | 
			
		||||
  meta_window_move_to_monitor (test_window, 1);
 | 
			
		||||
  check_test_client_state (test_client);
 | 
			
		||||
 | 
			
		||||
  fprintf(stderr, ":::: %s:%d %s() - UNPLUGGING\n", __FILE__, __LINE__, __func__);
 | 
			
		||||
 | 
			
		||||
  test_case.setup.n_outputs = 0;
 | 
			
		||||
  test_setup = create_monitor_test_setup (&test_case,
 | 
			
		||||
                                          MONITOR_TEST_FLAG_NO_STORED);
 | 
			
		||||
  emulate_hotplug (test_setup);
 | 
			
		||||
  test_case.setup.n_outputs = 1;
 | 
			
		||||
  test_setup = create_monitor_test_setup (&test_case,
 | 
			
		||||
                                          MONITOR_TEST_FLAG_NO_STORED);
 | 
			
		||||
  emulate_hotplug (test_setup);
 | 
			
		||||
 | 
			
		||||
  dispatch ();
 | 
			
		||||
 | 
			
		||||
  /*
 | 
			
		||||
   * 1) Start with two monitors connected.
 | 
			
		||||
   * 2) Tile a window on the second monitor.
 | 
			
		||||
   * 3) Untile window.
 | 
			
		||||
   * 4) Unplug monitor.
 | 
			
		||||
   * 5) Tile window again.
 | 
			
		||||
   */
 | 
			
		||||
 | 
			
		||||
  test_case.setup.n_outputs = 2;
 | 
			
		||||
  test_setup = create_monitor_test_setup (&test_case,
 | 
			
		||||
                                          MONITOR_TEST_FLAG_NO_STORED);
 | 
			
		||||
  emulate_hotplug (test_setup);
 | 
			
		||||
 | 
			
		||||
  meta_window_move_to_monitor (test_window, 1);
 | 
			
		||||
  meta_window_tile (test_window, META_TILE_NONE);
 | 
			
		||||
 | 
			
		||||
  test_case.setup.n_outputs = 1;
 | 
			
		||||
  test_setup = create_monitor_test_setup (&test_case,
 | 
			
		||||
                                          MONITOR_TEST_FLAG_NO_STORED);
 | 
			
		||||
  emulate_hotplug (test_setup);
 | 
			
		||||
 | 
			
		||||
  meta_window_tile (test_window, META_TILE_MAXIMIZED);
 | 
			
		||||
 | 
			
		||||
  test_client_destroy (test_client);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static void
 | 
			
		||||
meta_test_monitor_migrated_wiggle (void)
 | 
			
		||||
{
 | 
			
		||||
@@ -6138,9 +6008,6 @@ init_monitor_tests (void)
 | 
			
		||||
                    meta_test_monitor_migrated_wiggle);
 | 
			
		||||
  add_monitor_test ("/backends/monitor/migrated/wiggle-discard",
 | 
			
		||||
                    meta_test_monitor_migrated_wiggle_discard);
 | 
			
		||||
 | 
			
		||||
  add_monitor_test ("/backends/monitor/wm/tiling",
 | 
			
		||||
                    meta_test_monitor_wm_tiling);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void
 | 
			
		||||
 
 | 
			
		||||
Some files were not shown because too many files have changed in this diff Show More
		Reference in New Issue
	
	Block a user