
    EgF                     V    d dl mZmZmZ d dlZd dlmZ  G d dej                        Zy)    )GioGObjectGLibNDEBUGc                   H     e Zd ZdZ fdZd Zd ZddZddZ fdZ	 xZ
S )	NameBlockerz
    Terminates other screensavers.  Ideally we'd just take ownership of their
    dbus names, but due to how DE detection works in xdg-screensaver, that script
    incorrectly assumes we're a gnome or mate session if their names are owned.
    c                 |    t         t        |           g | _        | j	                  d       | j	                  d       y )Nzorg.gnome.ScreenSaverzorg.mate.ScreenSaver)superr	   __init__owned_nameswatchself	__class__s    8/usr/share/cinnamon-screensaver/dbusdepot/nameBlocker.pyr   zNameBlocker.__init__   s2    k4)+

*+

)*    c                     t        j                  t         j                  j                  |t         j                  j
                  | j                  | j                        }| j                  j                  |df       y )Nname)
r   bus_watch_nameBusTypeSESSIONBusNameWatcherFlagsNONEon_name_appearedon_name_lostr   append)r   r   handles      r   r   zNameBlocker.watch   s]    ##CKK$7$7$($'$;$;$@$@$($9$9$($5$5	7 	 01r   c                     | j                   D ](  \  }}t        d|z         t        j                  |       * g | _         y )NzReleasing dbus name: %s)r   r   r   bus_unown_name)r   r   r   s      r   unwatch_allzNameBlocker.unwatch_all   sA    ".. 	'NVT+d23v&	'
 r   c                     t        d|z         |j                  |d|j                  dd      z   |dd d t        j                  j
                  dd 	       y )Nz*%s appeared on the session bus, killing it/.Quit)r   callreplacer   DBusCallFlagsr   )r   
connectionr   
name_ownerdatas        r   r   zNameBlocker.on_name_appeared'   sR    :TAB
dll344))..	r   c                      t        d|z         y )Nz%s is gone from the session busr   )r   r*   r   r,   s       r   r   zNameBlocker.on_name_lost4   s    /$67r   c                 `    t        d       | j                          t        t        |           y )NznameBlocker do_dispose)r   r!   r   r	   
do_disposer   s    r   r/   zNameBlocker.do_dispose7   s%    &'k4+-r   )N)__name__
__module____qualname____doc__r   r   r!   r   r   r/   __classcell__)r   s   @r   r	   r	      s+    
+28. .r   r	   )gi.repositoryr   r   r   status
util.utilsr   r	    r   r   <module>r9      s#    - ,  4.'// 4.r   