| 1685 | } |
| 1686 | |
| 1687 | bool DebuggerPlugin::setBreakpoint( const std::string& doc, Uint32 lineNumber ) { |
| 1688 | Lock l( mBreakpointsMutex ); |
| 1689 | |
| 1690 | initStatusDebuggerController(); |
| 1691 | |
| 1692 | if ( !mBreakpointsModel ) |
| 1693 | mBreakpointsModel = std::make_shared<BreakpointsModel>( mBreakpoints, getUISceneNode() ); |
| 1694 | |
| 1695 | auto sdc = getStatusDebuggerController(); |
| 1696 | if ( sdc && sdc->getUIBreakpoints()->getModel() == nullptr ) |
| 1697 | sdc->getUIBreakpoints()->setModel( mBreakpointsModel ); |
| 1698 | |
| 1699 | auto& breakpoints = mBreakpoints[doc]; |
| 1700 | auto breakpointIt = breakpoints.find( SourceBreakpointStateful( lineNumber ) ); |
| 1701 | if ( breakpointIt != breakpoints.end() ) { |
| 1702 | breakpoints.erase( breakpointIt ); |
| 1703 | mBreakpointsModel->erase( doc, lineNumber ); |
| 1704 | } else { |
| 1705 | breakpoints.insert( SourceBreakpointStateful( lineNumber ) ); |
| 1706 | mBreakpointsModel->insert( doc, lineNumber ); |
| 1707 | } |
| 1708 | |
| 1709 | mThreadPool->run( [this, doc] { sendFileBreakpoints( doc ); } ); |
| 1710 | |
| 1711 | getUISceneNode()->getRoot()->invalidateDraw(); |
| 1712 | |
| 1713 | return true; |
| 1714 | } |
| 1715 | |
| 1716 | bool DebuggerPlugin::setBreakpoint( TextDocument* doc, Uint32 lineNumber ) { |
| 1717 | if ( !doc->hasFilepath() ) |
nothing calls this directly
no test coverage detected