First code analysis changes, this "should" make Greenshot more stable and implement things as is supposed.

git-svn-id: http://svn.code.sf.net/p/greenshot/code/trunk@2481 7dccd23d-a4a3-4e1f-8c07-b4c1b4018ab4
This commit is contained in:
RKrom 2013-02-12 18:43:56 +00:00
parent 3f4d93f2b6
commit a394904aa3
64 changed files with 514 additions and 343 deletions

View file

@ -320,7 +320,9 @@ namespace Greenshot.Drawing {
set {
drawingMode = value;
if (drawingModeChanged != null) {
drawingModeChanged.Invoke(this, drawingMode);
SurfaceDrawingModeEventArgs eventArgs = new SurfaceDrawingModeEventArgs();
eventArgs.DrawingMode = drawingMode;
drawingModeChanged.Invoke(this, eventArgs);
}
DeselectAllElements();
CreateUndrawnElement();
@ -437,28 +439,35 @@ namespace Greenshot.Drawing {
/// Will call the GarbageCollector to SuppressFinalize, preventing being cleaned twice
/// </summary>
public new void Dispose() {
Count--;
LOG.Debug("Disposing surface!");
if (buffer != null) {
buffer.Dispose();
buffer = null;
}
if (transparencyBackgroundBrush != null) {
transparencyBackgroundBrush.Dispose();
transparencyBackgroundBrush = null;
}
// Cleanup undo/redo stacks
while (undoStack != null && undoStack.Count > 0) {
undoStack.Pop().Dispose();
}
while (redoStack != null && redoStack.Count > 0) {
redoStack.Pop().Dispose();
}
Dispose(true);
base.Dispose();
GC.SuppressFinalize(this);
}
protected override void Dispose(bool disposing) {
if (disposing) {
Count--;
LOG.Debug("Disposing surface!");
if (buffer != null) {
buffer.Dispose();
buffer = null;
}
if (transparencyBackgroundBrush != null) {
transparencyBackgroundBrush.Dispose();
transparencyBackgroundBrush = null;
}
// Cleanup undo/redo stacks
while (undoStack != null && undoStack.Count > 0) {
undoStack.Pop().Dispose();
}
while (redoStack != null && redoStack.Count > 0) {
redoStack.Pop().Dispose();
}
}
base.Dispose(disposing);
}
/// <summary>
/// Undo the last action
/// </summary>
@ -833,7 +842,7 @@ namespace Greenshot.Drawing {
SetImage(newImage, false);
Invalidate();
if (surfaceSizeChanged != null && !imageRectangle.Equals(new Rectangle(Point.Empty, newImage.Size))) {
surfaceSizeChanged(this);
surfaceSizeChanged(this, null);
}
}
} finally {
@ -911,7 +920,7 @@ namespace Greenshot.Drawing {
SetImage(tmpImage, false);
elements.MoveBy(offset.X, offset.Y);
if (surfaceSizeChanged != null && !imageRectangle.Equals(new Rectangle(Point.Empty, tmpImage.Size))) {
surfaceSizeChanged(this);
surfaceSizeChanged(this, null);
}
Invalidate();
return true;
@ -929,7 +938,7 @@ namespace Greenshot.Drawing {
SetImage(previous, false);
elements.MoveBy(offset.X, offset.Y);
if (surfaceSizeChanged != null) {
surfaceSizeChanged(this);
surfaceSizeChanged(this, null);
}
Invalidate();
}
@ -1295,7 +1304,9 @@ namespace Greenshot.Drawing {
}
selectedElements.Clear();
if (movingElementChanged != null) {
movingElementChanged(this, selectedElements);
SurfaceElementEventArgs eventArgs = new SurfaceElementEventArgs();
eventArgs.Elements = selectedElements;
movingElementChanged(this, eventArgs);
}
}
}
@ -1414,7 +1425,9 @@ namespace Greenshot.Drawing {
selectedElements.Remove(container);
FieldAggregator.UnbindElement(container);
if (movingElementChanged != null) {
movingElementChanged(this, selectedElements);
SurfaceElementEventArgs eventArgs = new SurfaceElementEventArgs();
eventArgs.Elements = selectedElements;
movingElementChanged(this, eventArgs);
}
}
@ -1432,7 +1445,9 @@ namespace Greenshot.Drawing {
FieldAggregator.UnbindElement(element);
}
if (movingElementChanged != null) {
movingElementChanged(this, selectedElements);
SurfaceElementEventArgs eventArgs = new SurfaceElementEventArgs();
eventArgs.Elements = selectedElements;
movingElementChanged(this, eventArgs);
}
}
}
@ -1448,7 +1463,9 @@ namespace Greenshot.Drawing {
container.Selected = true;
FieldAggregator.BindElement(container);
if (movingElementChanged != null) {
movingElementChanged(this, selectedElements);
SurfaceElementEventArgs eventArgs = new SurfaceElementEventArgs();
eventArgs.Elements = selectedElements;
movingElementChanged(this, eventArgs);
}
container.Invalidate();
}