Bug 545767: [R-Debug] Fix applying of breakpoint changes while tasks are
running
Change-Id: I371c26e89beb6ac93d9154b4eec150b22759670d
diff --git a/r/org.eclipse.statet.r.debug.core/src/org/eclipse/statet/internal/r/debug/core/breakpoints/RControllerBreakpointAdapter.java b/r/org.eclipse.statet.r.debug.core/src/org/eclipse/statet/internal/r/debug/core/breakpoints/RControllerBreakpointAdapter.java
index ed6e13d..d0b36d9 100644
--- a/r/org.eclipse.statet.r.debug.core/src/org/eclipse/statet/internal/r/debug/core/breakpoints/RControllerBreakpointAdapter.java
+++ b/r/org.eclipse.statet.r.debug.core/src/org/eclipse/statet/internal/r/debug/core/breakpoints/RControllerBreakpointAdapter.java
@@ -1520,6 +1520,7 @@
}
check= true;
+ final String breakpointType= rBreakpoint.getBreakpointType();
final IMarker marker= rBreakpoint.getMarker();
if (!marker.getResource().equals(delta.getResource())
|| marker.getId() != delta.getId()) {
@@ -1530,9 +1531,14 @@
scheduleStateUpdate(rBreakpoint);
}
-// synchronized (fPendingPositionUpdatesLock) {
-// schedulePositionUpdate(lineBreakpoint);
-// }
+ if (breakpointType == RDebugModel.R_LINE_BREAKPOINT_TYPE_ID
+ || breakpointType == RDebugModel.R_METHOD_BREAKPOINT_TYPE_ID) {
+ // see Bug 545767
+ synchronized (this.positionUpdatesLock) {
+ this.positionModCounter.incrementAndGet();
+ schedulePositionUpdate((IRLineBreakpoint) rBreakpoint);
+ }
+ }
}
catch (final Exception e) {
RDebugCorePlugin.log(new Status(IStatus.ERROR, RDebugCorePlugin.BUNDLE_ID, 0,