1 /************************************************************** 2 * 3 * Licensed to the Apache Software Foundation (ASF) under one 4 * or more contributor license agreements. See the NOTICE file 5 * distributed with this work for additional information 6 * regarding copyright ownership. The ASF licenses this file 7 * to you under the Apache License, Version 2.0 (the 8 * "License"); you may not use this file except in compliance 9 * with the License. You may obtain a copy of the License at 10 * 11 * http://www.apache.org/licenses/LICENSE-2.0 12 * 13 * Unless required by applicable law or agreed to in writing, 14 * software distributed under the License is distributed on an 15 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 16 * KIND, either express or implied. See the License for the 17 * specific language governing permissions and limitations 18 * under the License. 19 * 20 *************************************************************/ 21 22 23 24 // MARKER(update_precomp.py): autogen include statement, do not remove 25 #include "precompiled_framework.hxx" 26 27 //_______________________________________________ 28 // include files of own module 29 #include <helper/wakeupthread.hxx> 30 #include <threadhelp/readguard.hxx> 31 #include <threadhelp/writeguard.hxx> 32 33 //_______________________________________________ 34 // namespace 35 36 namespace framework{ 37 38 //_______________________________________________ 39 // declarations 40 41 //*********************************************** WakeUpThread(const css::uno::Reference<css::util::XUpdatable> & xListener)42WakeUpThread::WakeUpThread(const css::uno::Reference< css::util::XUpdatable >& xListener) 43 : ThreadHelpBase( ) 44 , m_xListener (xListener) 45 { 46 } 47 48 //*********************************************** run()49void SAL_CALL WakeUpThread::run() 50 { 51 ::osl::Condition aSleeper; 52 53 TimeValue aTime; 54 aTime.Seconds = 0; 55 aTime.Nanosec = 25000000; // 25 msec 56 57 while(schedule()) 58 { 59 aSleeper.reset(); 60 aSleeper.wait(&aTime); 61 62 // SAFE -> 63 ReadGuard aReadLock(m_aLock); 64 css::uno::Reference< css::util::XUpdatable > xListener(m_xListener.get(), css::uno::UNO_QUERY); 65 aReadLock.unlock(); 66 // <- SAFE 67 68 if (xListener.is()) 69 xListener->update(); 70 } 71 } 72 73 //*********************************************** onTerminated()74void SAL_CALL WakeUpThread::onTerminated() 75 { 76 delete this; 77 } 78 79 } // namespace framework 80