private static string TryGetClassName(UIntPtr location, UIntPtr objH) { var className = "Unk"; if (objH == UIntPtr.Zero) { return(className); } UIntPtr classHandle; if (ObjectTracking.TryGetClassHandle(objH, out classHandle)) { className = ObjectTracking.GetClassName(classHandle); } return(className); }
private static T ref_wrap_uintptr <T>(ClrSyncManager manager, ref T tgt, SimpleRefDel <T> originalCode) { T ret; var ptr = ObjectTracking.GetCurrentRawAddress(ref tgt); manager.SyncVarAccess(ptr, MSyncVarOp.RWVAR_READWRITE); try { ret = originalCode(ref tgt); } catch (Exception e) { manager.CommitSyncVarAccess(); throw e; } manager.CommitSyncVarAccess(); return(ret); }
private void inputImage_MouseUp(object sender, MouseButtonEventArgs e) { inputImageCanvas.Children.Clear(); isSelecting = false; endPos = new Point(Math.Min(e.GetPosition(inputImage).X, inputImage.Width), Math.Min(e.GetPosition(inputImage).Y, inputImage.Height)); Console.WriteLine("UP!" + endPos); int xRate = (int)(inputImage.Source.Width / inputImage.Width); int yRate = (int)(inputImage.Source.Height / inputImage.Height); selectingWindow = new System.Drawing.Rectangle( (int)startPos.X * xRate, (int)startPos.Y * yRate, (int)(endPos.X - startPos.X) * xRate, (int)(endPos.Y - startPos.Y) * yRate); trackStart = true; objTracking = null; }
private void updateCamWorker(object sender, DoWorkEventArgs e) { using (Image <Bgr, Byte> frame = webcam.QueryFrame().Flip(Emgu.CV.CvEnum.FLIP.HORIZONTAL)) { if (trackStart) { if (objTracking == null) { objTracking = new ObjectTracking(frame, selectingWindow); } else { System.Drawing.Rectangle result = objTracking.Tracking(frame); frame.Draw(result, new Bgr(0, 255, 0), 3); Dispatcher.Invoke(DispatcherPriority.Normal, new Action( delegate() { if (objTracking != null) { inputImage.Source = frame.ToBitmapSource(); hueImage.Source = objTracking.hue.ToBitmapSource(); backprojectImage.Source = objTracking.backproject.ToBitmapSource(); maskImage.Source = objTracking.mask.ToBitmapSource(); } } )); } } else { Dispatcher.Invoke(DispatcherPriority.Normal, new Action( delegate() { inputImage.Source = frame.ToBitmapSource(); } )); } } }
public override void Store(UIntPtr location, uint size, int codeLabel, bool is_volatile) { //TODO: Do not record writes within a constructor (BoundedAsyncRacy) if (this.CallStack.Peek().IsConstructor) { return; } UIntPtr objH, objO; ObjectTracking.GetObjectHandle(location, out objH, out objO); if (this.RecordRW && !this.CallStack.Peek().FullName.Contains("Microsoft.PSharp") && objH != null) { // TODO: Hack if (this.CallStack.Peek().ToString().Contains("Monitor")) { return; } // End hack ThreadTrace obj = this.ThreadTrace[this.ThreadTrace.Count - 1]; obj.Accesses.Add(new ActionInstr(true, location, objH, objO, GetSourceLocation(location))); this.DebugTrace.Add($"<ThreadMonitorLog> Store '{location}' '{objH} '{objO}'" + $"'{this.CallStack.Peek()}' '{GetSourceLocation(location)}'."); } else if (!this.CallStack.Peek().FullName.Contains("Microsoft.PSharp") && objH != null) { foreach (Tuple <Method, int> m in TaskMethods) { //TODO: This is fragile (for tasks) if (this.CallStack.Peek().ShortName.Contains(m.Item1.ShortName)) { ThreadTrace obj = Monitoring.ThreadTrace.CreateTraceForTask(m.Item2); obj.Accesses.Add(new ActionInstr(true, location, objH, objO, GetSourceLocation(location))); this.ThreadTrace.Add(obj); } } } }