Instrumentation and pull ui update async
This commit is contained in:
		
							parent
							
								
									8aa28108ea
								
							
						
					
					
						commit
						9e93745587
					
				| @ -842,6 +842,7 @@ MainWindow::MainWindow(QDir const& temp_directory, bool multiple, | ||||
|            , &QTextEdit::textChanged | ||||
|            , [this] () {on_extFreeTextMsgEdit_currentTextChanged (ui->extFreeTextMsgEdit->toPlainText ());}); | ||||
| 
 | ||||
|   m_guiTimer.setSingleShot(true); | ||||
|   connect(&m_guiTimer, &QTimer::timeout, this, &MainWindow::guiUpdate); | ||||
|   m_guiTimer.start(100);   //### Don't change the 100 ms! ###
 | ||||
| 
 | ||||
| @ -4087,11 +4088,22 @@ void MainWindow::decodeBusy(bool b)                             //decodeBusy() | ||||
| //------------------------------------------------------------- //guiUpdate()
 | ||||
| void MainWindow::guiUpdate() | ||||
| { | ||||
|   static quint64 lastLoop; | ||||
|   static char message[29]; | ||||
|   static char msgsent[29]; | ||||
|   double txDuration; | ||||
|   QString rt; | ||||
| 
 | ||||
|   quint64 thisLoop = QDateTime::currentMSecsSinceEpoch(); | ||||
|   if(lastLoop == 0){ | ||||
|       lastLoop = thisLoop; | ||||
|   } | ||||
|   quint64 delta = thisLoop - lastLoop; | ||||
|   if(delta > (100 + 10)){ | ||||
|     qDebug() << "guiupdate overrun" << (delta-100); | ||||
|   } | ||||
|   lastLoop = thisLoop; | ||||
| 
 | ||||
|   if(m_TRperiod==0) m_TRperiod=60; | ||||
|   txDuration=0.0; | ||||
|   if(m_modeTx=="FT8")  txDuration=1.0 + NUM_FT8_SYMBOLS*1920/12000.0;      // FT8
 | ||||
| @ -4533,28 +4545,33 @@ void MainWindow::guiUpdate() | ||||
|         tryBandHop(); | ||||
|     } | ||||
| 
 | ||||
|     // once per period/3
 | ||||
|     // once at the end of the period
 | ||||
|     bool forceDirty = false; | ||||
|     if(m_sec0 % (m_TRperiod/3) == 0){ | ||||
|         // force rx dirty three times per period
 | ||||
|     if(m_sec0 % (m_TRperiod-2) == 0 || | ||||
|        m_sec0 % (m_TRperiod-1) == 0 || | ||||
|        m_sec0 % (m_TRperiod) == 0){ | ||||
|         // force rx dirty once times per period
 | ||||
|         forceDirty = true; | ||||
|     } | ||||
| 
 | ||||
|     // once per second...
 | ||||
| 
 | ||||
|     // update the dial frequency once per second..
 | ||||
|     displayDialFrequency(); | ||||
| 
 | ||||
|     // process all received activity...
 | ||||
|     processActivity(forceDirty); | ||||
|     // once per second...but not when we're transmitting
 | ||||
|     if(!m_transmitting){ | ||||
|         QTimer::singleShot(0, this, [this, forceDirty](){ | ||||
|             // process all received activity...
 | ||||
|             processActivity(forceDirty); | ||||
| 
 | ||||
|     // process outgoing tx queue...
 | ||||
|     processTxQueue(); | ||||
|             // process outgoing tx queue...
 | ||||
|             processTxQueue(); | ||||
| 
 | ||||
|     // once processed, lets update the display...
 | ||||
|     displayActivity(forceDirty); | ||||
|     updateButtonDisplay(); | ||||
|     updateTextDisplay(); | ||||
|             // once processed, lets update the display...
 | ||||
|             displayActivity(forceDirty); | ||||
|             updateButtonDisplay(); | ||||
|             updateTextDisplay(); | ||||
|         }); | ||||
|     } | ||||
|   } | ||||
| 
 | ||||
|   // once per 100ms
 | ||||
| @ -4562,6 +4579,16 @@ void MainWindow::guiUpdate() | ||||
| 
 | ||||
|   m_iptt0=g_iptt; | ||||
|   m_btxok0=m_btxok; | ||||
| 
 | ||||
|   // compute the processing time and adjust loop to hit the next 100ms
 | ||||
|   auto endLoop = QDateTime::currentMSecsSinceEpoch(); | ||||
|   auto processingTime = endLoop - thisLoop; | ||||
|   auto nextLoopMs = 0; | ||||
|   if(processingTime < 100){ | ||||
|       nextLoopMs = 100 - processingTime; | ||||
|   } | ||||
| 
 | ||||
|   m_guiTimer.start(nextLoopMs); | ||||
| }               //End of guiUpdate
 | ||||
| 
 | ||||
| 
 | ||||
| @ -5454,7 +5481,8 @@ void MainWindow::on_extFreeTextMsgEdit_currentTextChanged (QString const& text) | ||||
|       ui->extFreeTextMsgEdit->setTextCursor(c); | ||||
|     } | ||||
| 
 | ||||
|     m_txTextDirty = true; | ||||
|     m_txTextDirty = x != m_txTextDirtyLastText; | ||||
|     m_txTextDirtyLastText = x; | ||||
| 
 | ||||
|     // immediately update the display
 | ||||
|     updateButtonDisplay(); | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user
	 Jordan Sherer
						Jordan Sherer