Stimulus display blacks out upon loading new experiment
Reported by Christopher Stawarz | May 27th, 2010 @ 02:33 PM | in 0.4.4
This is happening with the 0.4.4rc5 build. I'm running on a two-monitor setup, with one of the monitors serving as a full-screen stimulus display. Both monitors are driven by a single NVIDIA GeForce 7300 GT graphics card. I'm running Mac OS X 10.6.3.
I can start up the client and server and load and run an experiment with no problem. However, if I close the experiment and load another (or the same experiment again), the stimulus display goes black, like it's been shut off. If I then close and load once more, the stimulus display is back to normal. I can repeat this failure/success pattern indefinitely. The behavior does not depend on the experiment(s) used.
Coincident with the display black out, the server spits out the following messages:
2010-05-27 15:00:31.817 MWServer[315:4a03] originalDisplayMode = {
BitsPerPixel = 32;
BitsPerSample = 8;
Height = 1050;
IODisplayModeID = 127;
IOFlags = 7;
Mode = 62;
RefreshRate = 61;
SamplesPerPixel = 3;
UsableForDesktopGUI = 1;
Width = 1680;
kCGDisplayBytesPerRow = 7168;
kCGDisplayModeIsSafeForHardware = 1;
}
Thu May 27 15:00:31 dicarlo23.mit.edu MWServer[315] <Error>: kCGErrorIllegalArgument: CGSGetSurfaceBounds
Thu May 27 15:00:31 dicarlo23.mit.edu MWServer[315] <Error>: kCGErrorFailure: Set a breakpoint @ CGErrorBreakpoint() to catch errors as they are logged.
2010-05-27 15:00:31.833 MWServer[315:4a03] invalid fullscreen drawable
Running through the same scenario in gdb and breaking on
CGErrorBreakpoint
yields the following backtrace:
0x00007fff8247d883 in CGErrorBreakpoint ()
0x00007fff82507caa in CGSGlobalErrorv ()
0x00007fff8236c5ef in CGSGetSurfaceBounds ()
0x00007fff80c83782 in CGLSetOffScreen ()
0x00007fff80c83ac5 in CGLSetFullScreen ()
0x00007fff85be7537 in -[NSOpenGLContext setFullScreen] ()
0x0000000100089587 in mw::OpenGLContextManager::newFullScreenContext ()
0x0000000100059055 in mw::prepareStimulusDisplay ()
0x000000010004dee8 in mw::ExperimentFactory::createObject ()
0x000000010002e339 in mw::ComponentRegistry::createNewObject ()
0x000000010002e596 in mw::ComponentRegistry::registerNewObject ()
0x0000000100156424 in mw::XMLParser::_processGenericCreateDirective ()
0x000000010014b5a3 in mw::XMLParser::_processCreateDirective ()
0x000000010014bf24 in mw::XMLParser::_processNode ()
0x00000001001576e2 in mw::XMLParser::parse ()
0x000000010005b374 in mw::loadExperimentFromXMLParser ()
0x0000000100112765 in mw::StandardSystemEventHandler::handleSystemEvent ()
0x0000000100114159 in mw::StandardSystemEventHandler::handleEvent ()
0x00000001001470da in mw::EventListener::service ()
0x0000000100146c47 in readReader ()
0x00000001001480f8 in boost::_bi::list1<boost::_bi::value<boost::shared_ptr<mw::EventListener> > >::operator()<void*, void* (*)(boost::shared_ptr<mw::EventListener> const&), boost::_bi::list0> ()
0x0000000100148136 in boost::_bi::bind_t<void*, void* (*)(boost::shared_ptr<mw::EventListener> const&), boost::_bi::list1<boost::_bi::value<boost::shared_ptr<mw::EventListener> > > >::operator() ()
0x0000000100148155 in boost::detail::function::function_obj_invoker0<boost::_bi::bind_t<void*, void* (*)(boost::shared_ptr<mw::EventListener> const&), boost::_bi::list1<boost::_bi::value<boost::shared_ptr<mw::EventListener> > > >, void*>::invoke ()
0x00000001149d6edf in boost::function0<void*>::operator() ()
0x00000001149d2121 in zen_scheduler::zenScheduledExecutionThread ()
0x00007fff845218b6 in _pthread_start ()
0x00007fff84521769 in thread_start ()
Comments and changes to this ticket
-
Christopher Stawarz May 27th, 2010 @ 07:08 PM
- Assigned user set to Christopher Stawarz
Adding the following line at the beginning of
OpenGLContextManager::releaseDisplays
(right beforeCGReleaseAllDisplays
) eliminates the problem:[contexts makeObjectsPerformSelector:@selector(clearDrawable)];
Here's what the docs say about
clearDrawable
:This method disassociates the receiver from any associated
NSView
object. If the receiver is in full-screen or offscreen mode, it exits that mode. -
Christopher Stawarz May 28th, 2010 @ 01:13 PM
- State changed from new to resolved
Fixed in commit c70f9ceb0896b1a0823a0974a5cf3a39075da3a8
Please Sign in or create a free account to add a new ticket.
With your very own profile, you can contribute to projects, track your activity, watch tickets, receive and update tickets through your email and much more.
Create your profile
Help contribute to this project by taking a few moments to create your personal profile. Create your profile ยป
The core framework and supporting libraries for the MWorks Suite