My best guess is that this is a threading related problem. Ogre went through some big threading changes for 1.7, and fairly recently I also made some changes to QtOgre which I hoped would allow log messages to be sent from different threads. But to be honest this is hardly tested as I haven't really used Ogre 1.7.
The first thing you should do is to comment out the following line:
Code: Select all
//emit _logMessageReceived(message, logLevel);
The application should still run so you can verify wherther this was indeed the problem, you just won't get any log output. Next you can try uncommenting the block of code before the one you just commented out. That is, your Log::logMessage() function should now look like this:
Code: Select all
void Log::logMessage(const QString& message, LogLevel logLevel)
{
mLogModel->append(0, "file", message, logLevel);
logTable->verticalHeader()->resizeSection(mLogModel->rowCount() - 1, 14);
logTable->scrollToBottom();
if(mForceProcessEvents) {
qApp->processEvents();
}
//emit _logMessageReceived(message, logLevel);
}
This will get your log messages back, but it will crash if you try and send messages from another thread (i.e. it's my old system before I changed it recently).
Please let me know if these changes help, because they will identify threadiing as being the cause. For an proper solution you will have to wait until I have a chance to investigate. But I would be curious - did you build Ogre from source or use the SDK? And if you built from source, do you know which threading library you used (think the options are Boost, POCO, and TBB). You can probably see this from your Ogre CMake file.