diff options
author | dakkar <dakkar@thenautilus.net> | 2021-05-01 10:00:39 +0100 |
---|---|---|
committer | dakkar <dakkar@thenautilus.net> | 2021-05-01 10:04:13 +0100 |
commit | 97841787fed3f656674692b0638fa70fe0857012 (patch) | |
tree | e8bd8311170847593f2681995905222e5933ee9c /lib/App/XScreenSaver/DBus/SaverProxy.pm | |
parent | autoflush output (diff) | |
download | xscreensaver-dbus-97841787fed3f656674692b0638fa70fe0857012.tar.gz xscreensaver-dbus-97841787fed3f656674692b0638fa70fe0857012.tar.bz2 xscreensaver-dbus-97841787fed3f656674692b0638fa70fe0857012.zip |
break it out for distribution
Diffstat (limited to 'lib/App/XScreenSaver/DBus/SaverProxy.pm')
-rw-r--r-- | lib/App/XScreenSaver/DBus/SaverProxy.pm | 34 |
1 files changed, 34 insertions, 0 deletions
diff --git a/lib/App/XScreenSaver/DBus/SaverProxy.pm b/lib/App/XScreenSaver/DBus/SaverProxy.pm new file mode 100644 index 0000000..d098045 --- /dev/null +++ b/lib/App/XScreenSaver/DBus/SaverProxy.pm @@ -0,0 +1,34 @@ +package App::XScreenSaver::DBus::SaverProxy; +use strict; +use warnings; +use experimental 'signatures'; +# this is the interface name +use Net::DBus::Exporter qw(org.freedesktop.ScreenSaver); +use parent 'Net::DBus::Object'; + +dbus_method('Inhibit',['string','string'],['uint32']); +dbus_method('UnInhibit',['uint32'],[]); + +sub new($class,$service,$path,$inhibit_cb,$uninhibit_cb) { + my $self = $class->SUPER::new($service, $path); + bless $self, $class; + $self->{__inhibit_cb} = $inhibit_cb; + $self->{__uninhibit_cb} = $uninhibit_cb; + return $self; +} + +our $_message; +sub _dispatch_object($self,$connection,$message,@etc) { + local $_message = $message; + return $self->SUPER::_dispatch_object($connection,$message,@etc); +} + +sub Inhibit($self,$name,$reason) { + return $self->{__inhibit_cb}->($name,$reason,$_message); +} + +sub UnInhibit($self,$cookie) { + return $self->{__uninhibit_cb}->($cookie,$_message); +} + +1; |