void TeamWindow::_SetActiveBreakpoint(UserBreakpoint* breakpoint) { if (breakpoint == fActiveBreakpoint) return; if (fActiveBreakpoint != NULL) fActiveBreakpoint->ReleaseReference(); fActiveBreakpoint = breakpoint; if (fActiveBreakpoint != NULL) { fActiveBreakpoint->AcquireReference(); // get the breakpoint's function (more exactly: some function instance) AutoLocker< ::Team> locker(fTeam); Function* function = fTeam->FunctionByID( breakpoint->Location().GetFunctionID()); FunctionInstance* functionInstance = function != NULL ? function->FirstInstance() : NULL; BReference<FunctionInstance> functionInstanceReference( functionInstance); locker.Unlock(); fActiveSourceObject = ACTIVE_SOURCE_BREAKPOINT; _SetActiveFunction(functionInstance); // scroll to the breakpoint's source code line number (it is not done // automatically, if the active function remains the same) _ScrollToActiveFunction(); } }
void TeamWindow::_SetActiveSourceCode(SourceCode* sourceCode) { if (sourceCode == fActiveSourceCode) { _ScrollToActiveFunction(); return; } if (fActiveSourceCode != NULL) fActiveSourceCode->ReleaseReference(); fActiveSourceCode = sourceCode; if (fActiveSourceCode != NULL) fActiveSourceCode->AcquireReference(); fSourceView->SetSourceCode(fActiveSourceCode); _ScrollToActiveFunction(); }