From 97841787fed3f656674692b0638fa70fe0857012 Mon Sep 17 00:00:00 2001 From: dakkar Date: Sat, 1 May 2021 10:00:39 +0100 Subject: break it out for distribution --- lib/App/XScreenSaver/DBus/SaverProxy.pm | 34 +++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) create mode 100644 lib/App/XScreenSaver/DBus/SaverProxy.pm (limited to 'lib/App/XScreenSaver/DBus/SaverProxy.pm') 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; -- cgit v1.2.3