From: <da...@us...> - 2009-06-30 03:52:21
|
Revision: 4914 http://kmess.svn.sourceforge.net/kmess/?rev=4914&view=rev Author: dazjorz Date: 2009-06-30 03:52:19 +0000 (Tue, 30 Jun 2009) Log Message: ----------- * Fixed some thread issues; now only starting the thread after the documents are given. Still an imperfect fix, if a new contact is chosen this could potentially run into problems if the thread just selects a new document that's currently being added, potentially. * Fixed a crash probably caused by my earlier commit, only showing if full debugging is enabled. * Fixed selectNextFile() to not return the base file if startingNumber is not zero, even if .1.xml doesn't exist and the base file does. Also added the MAX_LOG_FILE_SIZE which fontknocker missed earlier, and improved a debugging statement in chathistorydialog.cpp. Modified Paths: -------------- trunk/kmess/ChangeLog trunk/kmess/src/chat/chat.cpp trunk/kmess/src/dialogs/chathistorydialog.cpp trunk/kmess/src/utils/kmessshared.cpp Modified: trunk/kmess/ChangeLog =================================================================== --- trunk/kmess/ChangeLog 2009-06-30 01:40:59 UTC (rev 4913) +++ trunk/kmess/ChangeLog 2009-06-30 03:52:19 UTC (rev 4914) @@ -5,6 +5,14 @@ always displayed and a status icon is displayed as an overlay if possible. * Fixed bug where an invalid XML log file would make the chat history dialog go into an infinite loop. + * Fixed some thread issues; now only starting the thread after the documents + are given. Still an imperfect fix, if a new contact is chosen this could + potentially run into problems if the thread just selects a new document + that's currently being added, potentially. + * Fixed a crash probably caused by my earlier commit, only showing if full + debugging is enabled. + * Fixed selectNextFile() to not return the base file if startingNumber is not + zero, even if .1.xml doesn't exist and the base file does. 2009-06-29 (Diederik) * Fix a crash triggered by clients aborting while we're sending data. Modified: trunk/kmess/src/chat/chat.cpp =================================================================== --- trunk/kmess/src/chat/chat.cpp 2009-06-30 01:40:59 UTC (rev 4913) +++ trunk/kmess/src/chat/chat.cpp 2009-06-30 03:52:19 UTC (rev 4914) @@ -879,7 +879,7 @@ { // append unless filesize is too large file.setFileName( savePath + fileName + fileCount + "." + extension ); - if( file.size() > 2000000L ) + if( file.size() > Chat::MAX_LOG_FILE_SIZE ) { // create a new file file.setFileName( savePath + fileName + "." + QString::number( fileNumber ) + "." + extension ); Modified: trunk/kmess/src/dialogs/chathistorydialog.cpp =================================================================== --- trunk/kmess/src/dialogs/chathistorydialog.cpp 2009-06-30 01:40:59 UTC (rev 4913) +++ trunk/kmess/src/dialogs/chathistorydialog.cpp 2009-06-30 03:52:19 UTC (rev 4914) @@ -277,13 +277,20 @@ } #ifdef KMESSDEBUG_CHATHISTORYDIALOG_VERBOSE - kDebug() << "Adding conversation to log parser thread..."; + kDebug() << "Adding conversation" << entry.fileName() << "to log parser thread..."; #endif logParser_->addDocument( entry.fileName(), file.readAll() ); file.close(); } + // start the thread + if( logParser_ != 0 && !logParser_->isRunning() ) + { + kDebug() << "Starting the log parser thread!"; + logParser_->start( QThread::HighPriority ); + } + if( list.isEmpty() ) { setLoading( false ); @@ -405,6 +412,7 @@ connect( reloadLogsTimer_, SIGNAL( timeout() ), this, SLOT ( reloadLogs() ) ); } + if( reloadLogsTimer_ != sender() ) { #ifdef KMESSDEBUG_CHATHISTORYDIALOG @@ -646,11 +654,6 @@ void XmlLogParser::addDocument( const QString &fileName, const QByteArray &newDocument ) { documents_[ fileName ] = newDocument; - - if( ! isRunning() ) - { - start( QThread::HighPriority ); - } } @@ -690,8 +693,8 @@ { // take the first document from the hash for processing QHash<const QString,QByteArray>::iterator it = documents_.begin(); - const QString &fileName = it.key(); - const QByteArray &documentBytes = documents_.take( fileName ); + const QString fileName = it.key(); + const QByteArray documentBytes = documents_.take( fileName ); QDomDocument document; document.setContent( documentBytes ); Modified: trunk/kmess/src/utils/kmessshared.cpp =================================================================== --- trunk/kmess/src/utils/kmessshared.cpp 2009-06-30 01:40:59 UTC (rev 4913) +++ trunk/kmess/src/utils/kmessshared.cpp 2009-06-30 03:52:19 UTC (rev 4914) @@ -539,7 +539,7 @@ * @param suffix (out) Append to the baseName to get the name of the last * existing numbered file. * @param extension (in) Extension of the file to search for, see above. - * @param startingNumber (out) File number to start from, set to zero to start with + * @param startingNumber (in/out) File number to start from, set to zero to start with * the common name alone. Gets updated with the number of * the first available file. * @return bool If the file in the updated fileName param exists or not. @@ -548,7 +548,14 @@ { QString path( directory + baseName + "." ); - if( startingNumber == 0 && ! QFile::exists( path + extension ) ) + // if startingNumber is nonzero, we never allow to return the base file + // this is important if the base file exists but .1.xml doesn't exist; + // if this boolean is true it will return .1.xml and return false, if it's + // false it will be allowed to return .xml and return true. + // HACK XXX FIXME - Fix this damn method for 2.0! We can't have this legacy code like this. + bool returnBaseFileAllowed = startingNumber == 0; + + if( returnBaseFileAllowed && ! QFile::exists( path + extension ) ) { // "baseName.ext" doesn't exist, so return false // but first find the next available file for writing @@ -581,8 +588,20 @@ // Found the first non-existing file if( startingNumber == 1 ) { - // the last existing file is the base filename, without a suffix - suffix = QString(); + if( returnBaseFileAllowed ) + { + // the last existing file is the base filename, without a suffix + suffix = QString(); + } + else + { + suffix = ".1"; +#ifdef KMESSDEBUG_SHAREDMETHODS + kDebug() << "Called with nonzero startingNumber, so I'm not allowed to return the base file!" + << "Returning " << ( baseName + suffix + "." + extension ) << " which doesn't exist."; +#endif + return false; + } } else { This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |