[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[dotgnu-pnet-commits] pnetlib ChangeLog runtime/System/GC.cs System/C...
From: |
Heiko Weiss |
Subject: |
[dotgnu-pnet-commits] pnetlib ChangeLog runtime/System/GC.cs System/C... |
Date: |
Thu, 13 Jul 2006 13:12:33 +0000 |
CVSROOT: /sources/dotgnu-pnet
Module name: pnetlib
Changes by: Heiko Weiss <brubbel> 06/07/13 13:12:33
Modified files:
. : ChangeLog
runtime/System : GC.cs
System/ComponentModel: Component.cs
System.Windows.Forms: Form.cs TextBox.cs TextBoxBase.cs
Log message:
GC.cs, Component.cs: added a define for tests
Form.cs: fixed a memory leak
TextBox.cs, TextBoxBase.cs: optimized to use override methods
and not to use EventHandler
CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/pnetlib/ChangeLog?cvsroot=dotgnu-pnet&r1=1.2429&r2=1.2430
http://cvs.savannah.gnu.org/viewcvs/pnetlib/runtime/System/GC.cs?cvsroot=dotgnu-pnet&r1=1.4&r2=1.5
http://cvs.savannah.gnu.org/viewcvs/pnetlib/System/ComponentModel/Component.cs?cvsroot=dotgnu-pnet&r1=1.6&r2=1.7
http://cvs.savannah.gnu.org/viewcvs/pnetlib/System.Windows.Forms/Form.cs?cvsroot=dotgnu-pnet&r1=1.53&r2=1.54
http://cvs.savannah.gnu.org/viewcvs/pnetlib/System.Windows.Forms/TextBox.cs?cvsroot=dotgnu-pnet&r1=1.53&r2=1.54
http://cvs.savannah.gnu.org/viewcvs/pnetlib/System.Windows.Forms/TextBoxBase.cs?cvsroot=dotgnu-pnet&r1=1.18&r2=1.19
Patches:
Index: ChangeLog
===================================================================
RCS file: /sources/dotgnu-pnet/pnetlib/ChangeLog,v
retrieving revision 1.2429
retrieving revision 1.2430
diff -u -b -r1.2429 -r1.2430
--- ChangeLog 4 Jul 2006 05:07:42 -0000 1.2429
+++ ChangeLog 13 Jul 2006 13:12:32 -0000 1.2430
@@ -1,3 +1,12 @@
+2006-07-13 Heiko Weiss <address@hidden>
+
+ *runtime/System/GC.cs: added a define for tests
+ *System/ComponentModel/Component.cs: added a define for tests
+ *System.Windows.Forms/Form.cs: fixed a memory leak
+ *System.Windows.Forms/TextBox.cs,
+ System.Windows.Forms/TextBoxBase.cs: optimized to use override methods
+ and not to use EventHandler
+
2006-07-04 Heiko Weiss <address@hidden>
* Xsharp/TopLevelWindow.cs: fixed a null ref exception.
Index: runtime/System/GC.cs
===================================================================
RCS file: /sources/dotgnu-pnet/pnetlib/runtime/System/GC.cs,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -b -r1.4 -r1.5
--- runtime/System/GC.cs 15 Apr 2003 04:37:44 -0000 1.4
+++ runtime/System/GC.cs 13 Jul 2006 13:12:33 -0000 1.5
@@ -1,3 +1,4 @@
+//#define CHECK_FINALIZERS
/*
* GC.cs - Implementation of the "System.GC" class.
*
@@ -38,8 +39,13 @@
extern public static void ReRegisterForFinalize(Object obj);
// Suppress finalization for an object.
+#if CHECK_FINALIZERS
+ public static void SuppressFinalize(Object obj) {
+ }
+#else
[MethodImpl(MethodImplOptions.InternalCall)]
extern public static void SuppressFinalize(Object obj);
+#endif
// Wait for all pending finalizers to be run.
[MethodImpl(MethodImplOptions.InternalCall)]
Index: System/ComponentModel/Component.cs
===================================================================
RCS file: /sources/dotgnu-pnet/pnetlib/System/ComponentModel/Component.cs,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -b -r1.6 -r1.7
--- System/ComponentModel/Component.cs 8 Aug 2003 05:52:47 -0000 1.6
+++ System/ComponentModel/Component.cs 13 Jul 2006 13:12:33 -0000 1.7
@@ -1,3 +1,4 @@
+//#define CHECK_FINALIZERS
/*
* Component.cs - Implementation of the
* "System.ComponentModel.Component" class.
@@ -19,6 +20,10 @@
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
+using System;
+using System.Reflection;
+using System.Runtime.InteropServices;
+
namespace System.ComponentModel
{
@@ -34,13 +39,36 @@
private EventHandlerList events;
private ISite site;
+#if CHECK_FINALIZERS
+ static int iCount = 0;
+#endif
+
// Constructor.
- public Component() {}
+ public Component() {
+#if CHECK_FINALIZERS
+ ++iCount;
+ try {
+ Console.WriteLine( "++CO {0} {1} {2}", iCount,
GetHashCode(), this );
+ }
+ catch( Exception ) {
+ Console.WriteLine( "++CO {0} {1}", iCount,
GetHashCode() );
+ }
+#endif
+ }
// Destructor.
~Component()
{
Dispose(false);
+#if CHECK_FINALIZERS
+ --iCount;
+ try {
+ Console.WriteLine( "--CO {0} {1} {2}",
iCount, GetHashCode(), this);
+ }
+ catch( Exception ) {
+ Console.WriteLine( "--CO {0} {1}",
iCount, GetHashCode() );
+ }
+#endif
}
// Get this component's container.
@@ -153,7 +181,39 @@
}
}
}
+ //Console.WriteLine( "DISPOSE {0}",
this );
+ //ReflectComponent( this );
+ }
}
+
+ static void ReflectComponent( Component co ) {
+ Type t = co.GetType();
+
+
+ //FieldInfo [] fields = t.GetFields(BindingFlags.GetField |
BindingFlags.GetProperty | BindingFlags.NonPublic | BindingFlags.Public |
BindingFlags.Static );
+ FieldInfo [] fields =
t.GetFields(BindingFlags.Instance | BindingFlags.NonPublic |
BindingFlags.Public | BindingFlags.Static);
+ foreach( FieldInfo fld in fields ) {
+ object o = fld.GetValue(co);
+ if( null != o ) {
+ Type tt = o.GetType();
+ if( Component.CheckType(tt) ) {
+ Console.WriteLine(
"Field {0} [{1}] value {2}", fld.Name, tt, o );
+ }
+ }
+ }
+ }
+
+ static bool CheckType( Type t ) {
+ if( t.IsEnum ) return false;
+ if( t.IsPrimitive ) return false;
+ /*
+ if( t == typeof(String) ) return false;
+ if( t == typeof(Color) ) return false;
+ if( t == typeof(Size) ) return false;
+ if( t == typeof(Rectangle) ) return false;
+ if( t == typeof(Point) ) return false;
+ */
+ return true;
}
// Get a service that is implemented by this component.
Index: System.Windows.Forms/Form.cs
===================================================================
RCS file: /sources/dotgnu-pnet/pnetlib/System.Windows.Forms/Form.cs,v
retrieving revision 1.53
retrieving revision 1.54
diff -u -b -r1.53 -r1.54
--- System.Windows.Forms/Form.cs 12 Jun 2006 13:52:36 -0000 1.53
+++ System.Windows.Forms/Form.cs 13 Jul 2006 13:12:33 -0000 1.54
@@ -26,6 +26,7 @@
using System.Drawing;
using System.Drawing.Toolkit;
using System.ComponentModel;
+using System.Collections;
public class Form : ContainerControl
{
@@ -56,6 +57,7 @@
private Color transparencyKey;
private FormWindowState windowState;
internal static Form activeForm;
+ internal static ArrayList activeForms = new ArrayList();
private bool showInTaskbar;
private bool controlBox;
private bool loaded; /* whether we have sent OnLoad or not */
@@ -1208,6 +1210,8 @@
mergedMenu = null;
}
+ if( activeForm == this ) activeForm = null;
+
base.Dispose(disposing);
}
@@ -1288,12 +1292,16 @@
// Override the "HandleCreated" event.
protected override void OnHandleCreated(EventArgs e)
{
+ // we have to add a reference to the form if
the form is created and shown without a reference
+ // to avoid the form beeing collected, even it
is shown.
+ if( !activeForms.Contains(this) )
activeForms.Add(this);
base.OnHandleCreated(e);
}
// Override the "HandleDestroyed" event.
protected override void OnHandleDestroyed(EventArgs e)
{
+ activeForms.Remove(this);
base.OnHandleDestroyed(e);
}
Index: System.Windows.Forms/TextBox.cs
===================================================================
RCS file: /sources/dotgnu-pnet/pnetlib/System.Windows.Forms/TextBox.cs,v
retrieving revision 1.53
retrieving revision 1.54
diff -u -b -r1.53 -r1.54
--- System.Windows.Forms/TextBox.cs 12 Jun 2006 12:23:04 -0000 1.53
+++ System.Windows.Forms/TextBox.cs 13 Jul 2006 13:12:33 -0000 1.54
@@ -89,12 +89,6 @@
// TextBox API is maintained.
// Note: except for KeyPress events, for which the
// hooked up calls get priority over TextBox class.
- MouseDown += new MouseEventHandler(HandleMouseDown);
- MouseMove += new MouseEventHandler(HandleMouseMove);
- DoubleClick += new EventHandler(HandleDoubleClick);
- Paint += new PaintEventHandler(HandlePaint);
- MultilineChanged +=new EventHandler(HandleMultilineChanged);
- WordWrapChanged +=new EventHandler(HandleWordWrapChanged);
#if CONFIG_COMPONENT_MODEL
this.DataBindings.CollectionChanged +=new
CollectionChangeEventHandler(HandleDataBindingCollectionChanged);
@@ -690,29 +684,30 @@
}
- // Handle "MouseDown" events for the text box.
- private void HandleMouseDown(Object sender, MouseEventArgs e)
+ protected override void OnMouseDown(MouseEventArgs e)
{
+ base.OnMouseDown(e);
ProcessMouse(e);
}
- // Handle "MouseMove" events for the text box.
- private void HandleMouseMove(Object sender, MouseEventArgs e)
+ protected override void OnMouseMove(MouseEventArgs e)
{
+ base.OnMouseMove(e);
ProcessMouse(e);
}
- // Handle "DoubleClick" events for the text box.
- private void HandleDoubleClick(Object sender, EventArgs e)
+ protected override void OnDoubleClick(EventArgs e)
{
+ base.OnDoubleClick(e);
Point pt = PointToClient(MousePosition);
ProcessMouse(new MouseEventArgs(MouseButtons.Left, 2, pt.X,
pt.Y, 0));
}
// Handle "Paint" events for the text box.
// In our implementation NO painting happens outside of the paint
event. This might change because it might not update fast enough
- private void HandlePaint(Object sender, PaintEventArgs e)
+ protected override void OnPaint(PaintEventArgs e)
{
+ base.OnPaint(e);
Redraw(e.Graphics);
}
@@ -783,8 +778,9 @@
}
// Handle the event when multiline is changed.
- private void HandleMultilineChanged(object sender, EventArgs e)
+ protected override void OnMultilineChanged(EventArgs e)
{
+ base.OnMultilineChanged(e);
layout = null;
// Set back the actual chosen height
// Will cause LayoutFromText to be called
@@ -2028,8 +2024,7 @@
inTextChangedEvent = false;
}
- private void HandleWordWrapChanged(object sender, EventArgs e)
- {
+ internal override protected void OnWordWrapChanged( EventArgs e ) {
layout = null;
}
@@ -2120,12 +2115,6 @@
}
// remove event handler
- MouseDown -= new MouseEventHandler(HandleMouseDown);
- MouseMove -= new MouseEventHandler(HandleMouseMove);
- DoubleClick -= new EventHandler(HandleDoubleClick);
- Paint -= new PaintEventHandler(HandlePaint);
- MultilineChanged -=new EventHandler(HandleMultilineChanged);
- WordWrapChanged -=new EventHandler(HandleWordWrapChanged);
#if CONFIG_COMPONENT_MODEL
this.DataBindings.CollectionChanged -=new
CollectionChangeEventHandler(HandleDataBindingCollectionChanged);
Index: System.Windows.Forms/TextBoxBase.cs
===================================================================
RCS file: /sources/dotgnu-pnet/pnetlib/System.Windows.Forms/TextBoxBase.cs,v
retrieving revision 1.18
retrieving revision 1.19
diff -u -b -r1.18 -r1.19
--- System.Windows.Forms/TextBoxBase.cs 6 Apr 2006 10:06:16 -0000 1.18
+++ System.Windows.Forms/TextBoxBase.cs 13 Jul 2006 13:12:33 -0000 1.19
@@ -55,15 +55,11 @@
wordWrap = true;
BorderStyleInternal = BorderStyle.Fixed3D;
maxLength = 32767;
-
- // Trap key down events
- KeyDown += new KeyEventHandler(HandleKeyDown);
}
protected override void Dispose(bool disposing)
{
// remove event handler
- KeyDown -= new KeyEventHandler(HandleKeyDown);
base.Dispose(disposing);
}
@@ -334,8 +330,7 @@
if (wordWrap == value)
return;
wordWrap = value;
- if (WordWrapChanged != null)
- WordWrapChanged(this,
EventArgs.Empty);
+ OnWordWrapChanged(EventArgs.Empty);
}
}
@@ -594,7 +589,9 @@
}
}
- internal event EventHandler WordWrapChanged;
+
+ internal virtual protected void OnWordWrapChanged( EventArgs e ) {
+ }
// Caret Navigation
protected enum CaretDirection
@@ -760,9 +757,11 @@
#endif // !CONFIG_COMPACT_FORMS
- // Handle "KeyDown" events for the text box.
- private void HandleKeyDown(Object sender, KeyEventArgs e)
+ protected override void OnKeyDown(KeyEventArgs e)
{
+ base.OnKeyDown(e);
+ if( e.Handled ) return;
+
bool extendSel = (ModifierKeys & Keys.Shift) != 0;
bool controlKey = (ModifierKeys & Keys.Control) != 0;
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [dotgnu-pnet-commits] pnetlib ChangeLog runtime/System/GC.cs System/C...,
Heiko Weiss <=