1 /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ 2 /* 3 * This file is part of the LibreOffice project. 4 * 5 * This Source Code Form is subject to the terms of the Mozilla Public 6 * License, v. 2.0. If a copy of the MPL was not distributed with this 7 * file, You can obtain one at http://mozilla.org/MPL/2.0/. 8 * 9 * This file incorporates work covered by the following license notice: 10 * 11 * Licensed to the Apache Software Foundation (ASF) under one or more 12 * contributor license agreements. See the NOTICE file distributed 13 * with this work for additional information regarding copyright 14 * ownership. The ASF licenses this file to you under the Apache 15 * License, Version 2.0 (the "License"); you may not use this file 16 * except in compliance with the License. You may obtain a copy of 17 * the License at http://www.apache.org/licenses/LICENSE-2.0 . 18 */ 19 20 #include <sal/config.h> 21 22 #include <algorithm> 23 24 #include <wakeupevent.hxx> 25 26 27 namespace slideshow 28 { 29 namespace internal 30 { WakeupEvent(std::shared_ptr<canvas::tools::ElapsedTime> const & pTimeBase,ActivitiesQueue & rActivityQueue)31 WakeupEvent::WakeupEvent( 32 std::shared_ptr<canvas::tools::ElapsedTime> const & pTimeBase, 33 ActivitiesQueue& rActivityQueue ) : 34 Event("WakeupEvent"), 35 maTimer(pTimeBase), 36 mnNextTime(0.0), 37 mpActivity(), 38 mrActivityQueue( rActivityQueue ) 39 { 40 } 41 dispose()42 void WakeupEvent::dispose() 43 { 44 mpActivity.reset(); 45 } 46 fire()47 bool WakeupEvent::fire() 48 { 49 if( !mpActivity ) 50 return false; 51 52 return mrActivityQueue.addActivity( mpActivity ); 53 } 54 isCharged() const55 bool WakeupEvent::isCharged() const 56 { 57 // this event won't expire, we fire every time we're 58 // re-inserted into the event queue. 59 return true; 60 } 61 getActivationTime(double nCurrentTime) const62 double WakeupEvent::getActivationTime( double nCurrentTime ) const 63 { 64 const double nElapsedTime( maTimer.getElapsedTime() ); 65 66 return ::std::max( nCurrentTime, 67 nCurrentTime - nElapsedTime + mnNextTime ); 68 } 69 start()70 void WakeupEvent::start() 71 { 72 // start timer 73 maTimer.reset(); 74 } 75 setNextTimeout(double rNextTime)76 void WakeupEvent::setNextTimeout( double rNextTime ) 77 { 78 mnNextTime = rNextTime; 79 } 80 setActivity(const ActivitySharedPtr & rActivity)81 void WakeupEvent::setActivity( const ActivitySharedPtr& rActivity ) 82 { 83 mpActivity = rActivity; 84 } 85 } 86 } 87 88 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ 89