From db738c401bae4ff39724de6ee32a42135adec1e9 Mon Sep 17 00:00:00 2001 From: Mike Kestner Date: Wed, 23 Mar 2011 17:35:39 -0500 Subject: [PATCH] Make ToggleRef.Signals a Dictionary * glib/Object.cs: don't bother with IsAlive check on tref * glib/Signal.cs: remove unnecessary as usage * glib/ToggleRef.cs: make Signals a generic dictionary --- glib/Object.cs | 2 +- glib/Signal.cs | 4 ++-- glib/ToggleRef.cs | 34 ++++++++++------------------------ 3 files changed, 13 insertions(+), 27 deletions(-) diff --git a/glib/Object.cs b/glib/Object.cs index 0a9ed811d..071a82180 100644 --- a/glib/Object.cs +++ b/glib/Object.cs @@ -105,7 +105,7 @@ namespace GLib { if (Objects.Contains (o)) { ToggleRef toggle_ref = Objects [o] as ToggleRef; - if (toggle_ref != null && toggle_ref.IsAlive) + if (toggle_ref != null) obj = toggle_ref.Target; } diff --git a/glib/Signal.cs b/glib/Signal.cs index 7b98b003d..ec97a2a49 100644 --- a/glib/Signal.cs +++ b/glib/Signal.cs @@ -222,7 +222,7 @@ namespace GLib { public static Signal Lookup (GLib.Object obj, string name, Delegate marshaler) { - Signal result = obj.ToggleRef.Signals [name] as Signal; + Signal result = obj.ToggleRef.Signals [name]; if (result == null) result = new Signal (obj, name, marshaler); return result; @@ -230,7 +230,7 @@ namespace GLib { public static Signal Lookup (GLib.Object obj, string name, Type args_type) { - Signal result = obj.ToggleRef.Signals [name] as Signal; + Signal result = obj.ToggleRef.Signals [name]; if (result == null) result = new Signal (obj, name, args_type); return result; diff --git a/glib/ToggleRef.cs b/glib/ToggleRef.cs index 00b8a253c..558147fd7 100644 --- a/glib/ToggleRef.cs +++ b/glib/ToggleRef.cs @@ -2,7 +2,7 @@ // // Author: Mike Kestner // -// Copyright 2007 Novell, Inc. +// Copyright 2007, 2011 Novell, Inc. // // This program is free software; you can redistribute it and/or // modify it under the terms of version 2 of the Lesser GNU General @@ -19,11 +19,11 @@ // Boston, MA 02111-1307, USA. -namespace GLib { +using System; +using System.Collections.Generic; +using System.Runtime.InteropServices; - using System; - using System.Collections; - using System.Runtime.InteropServices; +namespace GLib { internal class ToggleRef { @@ -31,7 +31,7 @@ namespace GLib { IntPtr handle; object reference; GCHandle gch; - Hashtable signals; + Dictionary signals; public ToggleRef (GLib.Object target) { @@ -42,27 +42,14 @@ namespace GLib { g_object_unref (target.Handle); } - public bool IsAlive { - get { - if (reference is WeakReference) { - WeakReference weak = reference as WeakReference; - return weak.IsAlive; - } else if (reference == null) - return false; - return true; - } - } - public IntPtr Handle { - get { - return handle; - } + get { return handle; } } - public Hashtable Signals { + public Dictionary Signals { get { if (signals == null) - signals = new Hashtable (); + signals = new Dictionary (); return signals; } } @@ -115,8 +102,7 @@ namespace GLib { reference = new WeakReference (reference); else if (!is_last_ref && reference is WeakReference) { WeakReference weak = reference as WeakReference; - if (weak.IsAlive) - reference = weak.Target; + reference = weak.Target; } }