@@ -237,10 +237,13 @@ Client::getCursorPos(SInt32& x, SInt32& y) const
237
237
}
238
238
239
239
void
240
- Client::enter (SInt32 xAbs, SInt32 yAbs, UInt32 , KeyModifierMask mask, bool )
240
+ Client::enter (SInt32 xAbs, SInt32 yAbs, UInt32 , KeyModifierMask mask, bool forScreensaver )
241
241
{
242
242
m_active = true ;
243
243
m_screen->mouseMove (xAbs, yAbs);
244
+ if (!forScreensaver) {
245
+ m_screen->screensaver (false );
246
+ }
244
247
m_screen->enter (mask);
245
248
246
249
if (m_sendFileThread != NULL ) {
@@ -509,9 +512,17 @@ Client::setupScreen()
509
512
new TMethodEventJob<Client>(this ,
510
513
&Client::handleClipboardGrabbed));
511
514
m_events->adoptHandler (m_events->forIScreen ().localInput (),
512
- getEventTarget (),
513
- new TMethodEventJob<Client>(this ,
514
- &Client::handleLocalInputEvent));
515
+ getEventTarget (),
516
+ new TMethodEventJob<Client>(this ,
517
+ &Client::handleLocalInputEvent));
518
+ m_events->adoptHandler (m_events->forIPrimaryScreen ().screensaverActivated (),
519
+ getEventTarget (),
520
+ new TMethodEventJob<Client>(this ,
521
+ &Client::handleScreensaverActivatedEvent));
522
+ m_events->adoptHandler (m_events->forIPrimaryScreen ().screensaverDeactivated (),
523
+ getEventTarget (),
524
+ new TMethodEventJob<Client>(this ,
525
+ &Client::handleScreensaverDeactivatedEvent));
515
526
}
516
527
517
528
void
@@ -570,6 +581,11 @@ Client::cleanupScreen()
570
581
getEventTarget ());
571
582
m_events->removeHandler (m_events->forIScreen ().localInput (),
572
583
getEventTarget ());
584
+ m_events->removeHandler (m_events->forIPrimaryScreen ().screensaverActivated (),
585
+ getEventTarget ());
586
+ m_events->removeHandler (m_events->forIPrimaryScreen ().screensaverDeactivated (),
587
+ getEventTarget ());
588
+
573
589
delete m_server;
574
590
m_server = NULL ;
575
591
}
@@ -745,6 +761,18 @@ Client::handleResume(const Event&, void*)
745
761
}
746
762
}
747
763
764
+ void
765
+ Client::handleScreensaverActivatedEvent (const Event&, void *) {
766
+ LOG ((CLOG_DEBUG " Client received screensaver activate" ));
767
+ m_server->sendScreensaver (true );
768
+ }
769
+
770
+ void
771
+ Client::handleScreensaverDeactivatedEvent (const Event&, void *) {
772
+ LOG ((CLOG_DEBUG " Client received screensaver deactivate" ));
773
+ m_server->sendScreensaver (false );
774
+ }
775
+
748
776
void
749
777
Client::handleFileChunkSending (const Event& event, void *)
750
778
{
0 commit comments