Commits

Anonymous committed b0f160a Merge

CWS-TOOLING: integrate CWS dv18_DEV300

  • Participants
  • Parent commits 2a31965, e524c0e

Comments (0)

Files changed (1)

File extensions/source/update/check/updatecheck.cxx

     virtual void SAL_CALL onTerminated();
 
     /* Wrapper around checkForUpdates */
-    bool runCheck();
+    bool runCheck( bool & rbExtensionsChecked );
 
 private:
 
 //------------------------------------------------------------------------------
 
 bool 
-UpdateCheckThread::runCheck()
+UpdateCheckThread::runCheck( bool & rbExtensionsChecked )
 {
     bool ret = false;
     UpdateState eUIState = UPDATESTATE_NO_UPDATE_AVAIL;
     // and when there was no office update found
     if ( ( eUIState != UPDATESTATE_UPDATE_AVAIL ) &&
          ( eUIState != UPDATESTATE_UPDATE_NO_DOWNLOAD ) &&
-         !aController->isDialogShowing() )
+         !aController->isDialogShowing() &&
+         !rbExtensionsChecked )
     {
         bool bHasExtensionUpdates = checkForExtensionUpdates( m_xContext );
         aController->setHasExtensionUpdates( bHasExtensionUpdates );
         if ( bHasExtensionUpdates )
             aController->setUIState( UPDATESTATE_EXT_UPD_AVAIL );
+        rbExtensionsChecked = true;
     }
 
     // joining with this thread is safe again
 void SAL_CALL
 UpdateCheckThread::run()
 {
+    bool bExtensionsChecked = false;
+    TimeValue systime;
+    TimeValue nExtCheckTime;
+    osl_getSystemTime( &nExtCheckTime );
+
     osl::Condition::Result aResult = osl::Condition::result_timeout;
     TimeValue tv = { 10, 0 };
     
             
             if( ! checkNow ) 
             {
-                TimeValue systime;
                 osl_getSystemTime(&systime);
                 
                 // Go back to sleep until time has elapsed
 
             static sal_uInt8 n = 0;
             
-            if( ! hasInternetConnection() || ! runCheck() )
+            if( ! hasInternetConnection() || ! runCheck( bExtensionsChecked ) )
             {
-                // Increase next by 1, 5, 15, 60, .. minutes
-                static const sal_Int16 nRetryInterval[] = { 60, 300, 900, 3600 };
+                // the extension update check should be independent from the office update check
+                // 
+                osl_getSystemTime( &systime );
+                if ( nExtCheckTime.Seconds + offset < systime.Seconds )
+                    bExtensionsChecked = false;
+
+                // Increase next by 15, 60, .. minutes
+                static const sal_Int32 nRetryInterval[] = { 900, 3600, 14400, 86400 };
                 
-                if( n < sizeof(nRetryInterval) / sizeof(sal_Int16) )
+                if( n < sizeof(nRetryInterval) / sizeof(sal_Int32) )
                     ++n;
                 
                 tv.Seconds = nRetryInterval[n-1];
                 aResult = m_aCondition.wait(&tv);
             }
             else // reset retry counter
-                n = 0;            
+            {
+                n = 0;
+                bExtensionsChecked = false;
+            }
         }
     }
     
 void SAL_CALL
 ManualUpdateCheckThread::run()
 {
+    bool bExtensionsChecked = false;
+
     try {
-        runCheck();
+        runCheck( bExtensionsChecked );
         m_aCondition.reset();
     }
     catch(const uno::Exception& e) {