package App::XScreenSaver::DBus::SaverProxy;
use strict;
use warnings;
use experimental 'signatures';
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;