I am getting a crash on this function call:
Here is the backtrace:
#0 6934D504 ZNSbItSt11char_traitsItESaItEEaSERKS2_() (C:\code\TinEngine\Core\Test\QuickGUI.dll:??)
#1 692F56B0 ZN8QuickGUI6Widget15getInstanceNameEv() (C:\code\TinEngine\Core\Test\QuickGUI.dll:??)
#2 692CC591 ZN8QuickGUI10GUIManager15injectMouseMoveERKiS2_() (C:\code\TinEngine\Core\Test\QuickGUI.dll:??)
#3 692CD2B2 ZN8QuickGUI10GUIManager14setActiveSheetEPNS_5SheetE() (C:\code\TinEngine\Core\Test\QuickGUI.dll:??)
#4 692CDA4F ZN8QuickGUI10GUIManager5setupERKjS2_() (C:\code\TinEngine\Core\Test\QuickGUI.dll:??)
#5 004218EF tcg::facade::facade() (??:??)
#6 00414BD2 tcf::engine::CreateRemainingEngine() (??:??)
#7 00417A65 tcf::engine::Invoke() (??:??)
#8 00403BCC main() (??:??)
Is this using Code::Blocks also?
setup will call GUIManager::setActiveSheet, which calls the following lines of code:
// Update the active widget
mActiveWidget = mActiveSheet;
mWidgetContainingMouse = mActiveSheet;
As you can see, mWidgetContainingMouse and mActiveWidget should now be the default Sheet.
From your stack, it looks like the crash is here:
// Now get the widget the cursor is over.
Widget* wItr = mActiveWidget;
while( (wItr != NULL) && ((hitWidget = wItr->getTargetWidget(args.position)) == NULL) )
wItr = wItr->getParentWidget();
// NOTE: Widget is only detected if it is enabled.
args.widget = hitWidget;
CRASH ----------> if( (mWidgetContainingMouse->getInstanceName() != hitWidget->getInstanceName()) )
mWidgetContainingMouse = hitWidget;
else // widget containing mouse has not changed.
This would suggest hitWidget or mWidgetContainingMouse is NULL. Can you step through and see what is happening?
Yes, I am using Code::Blocks.
Sorry, for the delay. The imported VC project files for QuickGUI are messing up things on a regular basis.
My tests have shown, that hitWidget is indeed 0.
With rev 124 the problem disappeared. Did you apply any fixes, that I overlooked? If not, may I ask that the problem is investigated further? A bug, that randomly appears and disappears, is a sign of forthcoming doom.
I committed last night, maybe 10 hours ago, the log should show the time I checked it in. I made 2 or 3 revisions last night, one being the singleton imlpementation. I do not have bugs that randomly come and go, its a matter of unveiling a bug, or hiding it.
The static link issue from the other thread is not valid because my GUIManager and MosueCursor constructors take no arguments. But either way we have come to a solution for that.
Defensive coding is the art of not creating hiding places for bugs.
I've had this issue in Code::blocks as well. I've been assuming that i've been missing resources until i narrowed it down with log statements. My debug is liking to crash on init of the app, so log statements it had to be
Sound like something got fixed in the SVN, but is there any word on what might have been the fix so I can tailor my release?
Yesterday I uploaded Mikachu's Code Block Workspace and .cbp files, you'll find them in SVN. It was made during the 0.9.6b release. The current SVN has a lot more improvements and has a lot of changes in general, with the exception that I have broke List Widgets, which means if you update, ComboBox and MenuList won't work correctly. Aside for those, which won't be resolved until I complete the ScrollBar Widget and functionality, I recommend you giving it a shot if you're familiarizing with QuickGUI. If you really really needed Lists back I can fix it to work, but it will be a step sideways, since I planned to change the design of the List widget anyway.
Sorry I haven't responded sooner; been a very busy few days. I don't need anything in particular. Right now, I am just trying to get something working so I can learn the basics of the system, and possibly develop a working beta of my project's gui. So don't worry about pressing anything on my account.
I'll check out the SVN and give it a whirl.