2008-04-17 Mike Kestner <mkestner@novell.com>

* atk/glue/misc.c: glue for vms and singleton setup.
	* atk/Misc.custom: add OnThreadsEnter, OnThreadsLeave, and
	SetSingletonInstance members for Bridge implementors.
	[More of #365437]

svn path=/trunk/gtk-sharp/; revision=101092
This commit is contained in:
Mike Kestner 2008-04-18 01:10:08 +00:00
parent 35bc523511
commit 504323bf30
5 changed files with 151 additions and 0 deletions

View File

@ -1,3 +1,10 @@
2008-04-17 Mike Kestner <mkestner@novell.com>
* atk/glue/misc.c: glue for vms and singleton setup.
* atk/Misc.custom: add OnThreadsEnter, OnThreadsLeave, and
SetSingletonInstance members for Bridge implementors.
[More of #365437]
2008-04-17 Mike Kestner <mkestner@novell.com>
* glib/Object.cs: add Harden method to reduce the reflection

View File

@ -8,6 +8,7 @@ references = ../glib/glib-sharp.dll
sources =
customs = \
Misc.custom \
Object.custom \
Util.custom

89
atk/Misc.custom Normal file
View File

@ -0,0 +1,89 @@
// Misc.custom - Atk Misc class customizations
//
// Author: Mike Kestner <mkestner@novell.com>
//
// Copyright (c) 2008 Novell, Inc.
//
// This code is inserted after the automatically generated code.
//
//
// This program is free software; you can redistribute it and/or
// modify it under the terms of version 2 of the Lesser GNU General
// Public License as published by the Free Software Foundation.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
// Lesser General Public License for more details.
//
// You should have received a copy of the GNU Lesser General Public
// License along with this program; if not, write to the
// Free Software Foundation, Inc., 59 Temple Place - Suite 330,
// Boston, MA 02111-1307, USA.
[DllImport("atksharpglue-2")]
static extern int atksharp_misc_override_threads_enter (IntPtr type, ThreadDelegate cb);
[GLib.CDeclCallback]
delegate void ThreadDelegate (IntPtr raw);
static ThreadDelegate ThreadsEnterCallback;
static void ThreadsEnter_cb (IntPtr raw)
{
try {
Atk.Misc __obj = GLib.Object.GetObject (raw, false) as Atk.Misc;
__obj.OnThreadsEnter ();
} catch (Exception e) {
GLib.ExceptionManager.RaiseUnhandledException (e, false);
}
}
static void OverrideThreadsEnter (GLib.GType gtype)
{
if (ThreadsEnterCallback == null)
ThreadsEnterCallback = new ThreadDelegate (ThreadsEnter_cb);
atksharp_misc_override_threads_enter (gtype.Val, ThreadsEnterCallback);
}
[GLib.DefaultSignalHandler (Type=typeof (Atk.Misc), ConnectionMethod="OverrideThreadsEnter")]
protected virtual void OnThreadsEnter ()
{
}
[DllImport("atksharpglue-2")]
static extern int atksharp_misc_override_threads_leave (IntPtr type, ThreadDelegate cb);
static ThreadDelegate ThreadsLeaveCallback;
static void ThreadsLeave_cb (IntPtr raw)
{
try {
Atk.Misc __obj = GLib.Object.GetObject (raw, false) as Atk.Misc;
__obj.OnThreadsLeave ();
} catch (Exception e) {
GLib.ExceptionManager.RaiseUnhandledException (e, false);
}
}
static void OverrideThreadsLeave (GLib.GType gtype)
{
if (ThreadsLeaveCallback == null)
ThreadsLeaveCallback = new ThreadDelegate (ThreadsLeave_cb);
atksharp_misc_override_threads_leave (gtype.Val, ThreadsLeaveCallback);
}
[GLib.DefaultSignalHandler (Type=typeof (Atk.Misc), ConnectionMethod="OverrideThreadsLeave")]
protected virtual void OnThreadsLeave ()
{
}
[DllImport("atksharpglue-2")]
static extern void atksharp_misc_set_singleton_instance (IntPtr misc);
public static void SetSingletonInstance (Misc misc)
{
atksharp_misc_set_singleton_instance (misc.Handle);
}

View File

@ -3,6 +3,7 @@ lib_LTLIBRARIES = libatksharpglue-2.la
libatksharpglue_2_la_LDFLAGS = -module -avoid-version -no-undefined
libatksharpglue_2_la_SOURCES = \
misc.c \
object.c \
util.c \
vmglueheaders.h

53
atk/glue/misc.c Normal file
View File

@ -0,0 +1,53 @@
/* misc.c : Glue for overriding vms of AtkMisc
*
* Author: Mike Kestner <mkestner@novell.com>
*
* Copyright (c) 2008 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
* Public License as published by the Free Software Foundation.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this program; if not, write to the
* Free Software Foundation, Inc., 59 Temple Place - Suite 330,
* Boston, MA 02111-1307, USA.
*/
#include <atk/atk.h>
void atksharp_misc_override_threads_enter (GType gtype, gpointer cb);
void
atksharp_misc_override_threads_enter (GType gtype, gpointer cb)
{
AtkMiscClass *klass = g_type_class_peek (gtype);
if (!klass)
klass = g_type_class_ref (gtype);
((AtkMiscClass *) klass)->threads_enter = cb;
}
void atksharp_misc_override_threads_leave (GType gtype, gpointer cb);
void
atksharp_misc_override_threads_leave (GType gtype, gpointer cb)
{
AtkMiscClass *klass = g_type_class_peek (gtype);
if (!klass)
klass = g_type_class_ref (gtype);
((AtkMiscClass *) klass)->threads_leave = cb;
}
void atksharp_misc_set_singleton_instance (AtkMisc *misc);
void
atksharp_misc_set_singleton_instance (AtkMisc *misc)
{
atk_misc_instance = misc;
}