dotgnu-pnet-commits
[Top][All Lists]
Advanced

[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;
                




reply via email to

[Prev in Thread] Current Thread [Next in Thread]