Index: atk/atkmisc.h
===================================================================
--- atk/atkmisc.h	(.../tags/gnome-2-16)	(revision 0)
+++ atk/atkmisc.h	(.../trunk)	(revision 1133)
@@ -0,0 +1,90 @@
+/* ATK -  Accessibility Toolkit
+ * Copyright 2007 Sun Microsystems Inc.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library 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
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ * Boston, MA 02111-1307, USA.
+ */
+
+#ifndef __ATK_UTIL_H__
+#define __ATK_UTIL_H__
+
+#include <glib-object.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif /* __cplusplus */
+
+#define ATK_TYPE_MISC                   (atk_misc_get_type ())
+#define ATK_IS_MISC(obj)                G_TYPE_CHECK_INSTANCE_TYPE ((obj), ATK_TYPE_MISC)
+#define ATK_MISC(obj)                   G_TYPE_CHECK_INSTANCE_CAST ((obj), ATK_TYPE_MISC, AtkMisc)
+#define ATK_MISC_CLASS(klass)                   (G_TYPE_CHECK_CLASS_CAST ((klass), ATK_TYPE_MISC, AtkMiscClass))
+#define ATK_IS_MISC_CLASS(klass)                (G_TYPE_CHECK_CLASS_TYPE ((klass), ATK_TYPE_MISC))
+#define ATK_MISC_GET_CLASS(obj)                 (G_TYPE_INSTANCE_GET_CLASS ((obj), ATK_TYPE_MISC, AtkMiscClass))
+
+
+#ifndef _TYPEDEF_ATK_MISC_
+#define _TYPEDEF_ATK_MISC_
+typedef struct _AtkMisc      AtkMisc;
+typedef struct _AtkMiscClass AtkMiscClass;
+#endif
+
+struct _AtkMisc
+{
+  GObject parent;
+};
+
+/*
+ * Singleton instance - only the ATK implementation layer for
+ * a given GUI toolkit/application instance should touch this
+ * symbol directly.
+ */
+extern AtkMisc *atk_misc_instance;
+
+struct _AtkMiscClass
+{
+   GObjectClass parent;
+   void   (* threads_enter)                     (AtkMisc *misc);
+   void   (* threads_leave)                     (AtkMisc *misc);
+   gpointer vfuncs[32]; /* future bincompat */
+};
+GType atk_util_get_type (void);
+
+/*
+ * Wrapper for thread lock, i.e. take the thread mutex for the GUI toolkit, 
+ * if one exists.  
+ * (This method is implemented by the toolkit ATK implementation layer;
+ *  for instance, for GTK+, GAIL implements this via GDK_THREADS_ENTER).
+ */
+void     atk_misc_threads_enter  (AtkMisc *misc);
+
+/*
+ * Wrapper for thread lock, i.e. release the thread mutex for the GUI toolkit, 
+ * if one exists.  
+ * (This method is implemented by the toolkit ATK implementation layer;
+ *  for instance, for GTK+, GAIL implements this via GDK_THREADS_LEAVE).
+ */
+void     atk_misc_threads_leave  (AtkMisc *misc);
+
+/*
+ * Obtain (singleton) instance of AtkMisc.
+ */
+const AtkMisc *atk_misc_get_instance (void);
+
+#ifdef __cplusplus
+}
+#endif /* __cplusplus */
+
+
+#endif /* __ATK_MISC_H__ */

Property changes on: atk/atkmisc.h
___________________________________________________________________
Name: svn:executable
   + *

Index: atk/atk.h
===================================================================
--- atk/atk.h	(.../tags/gnome-2-16)	(revision 1133)
+++ atk/atk.h	(.../trunk)	(revision 1133)
@@ -44,6 +44,7 @@
 #include <atk/atktable.h>
 #include <atk/atktext.h>
 #include <atk/atkutil.h>
+#include <atk/atkmisc.h>
 #include <atk/atkvalue.h>
 
 #endif /* __ATK_H__ */
Index: atk/Makefile.am
===================================================================
--- atk/Makefile.am	(.../tags/gnome-2-16)	(revision 1133)
+++ atk/Makefile.am	(.../trunk)	(revision 1133)
@@ -44,6 +44,7 @@
 	atktable.c		\
 	atktext.c		\
 	atkutil.c		\
+	atkmisc.c		\
 	atkvalue.c		\
 	atk-enum-types.c
 
@@ -75,6 +76,7 @@
         atktable.h		\
         atktext.h		\
         atkutil.h		\
+        atkmisc.h		\
         atkvalue.h
 
 libatkinclude_HEADERS =		\
Index: atk/atkmisc.c
===================================================================
--- atk/atkmisc.c	(.../tags/gnome-2-16)	(revision 0)
+++ atk/atkmisc.c	(.../trunk)	(revision 1133)
@@ -0,0 +1,122 @@
+/* ATK -  Accessibility Toolkit
+ * Copyright 2007 Sun Microsystems Inc.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library 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 library; if not, write to the
+ * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ * Boston, MA 02111-1307, USA.
+ */
+
+#include "atkmisc.h"
+
+static void atk_misc_class_init (AtkMiscClass *klass);
+
+GType
+atk_misc_get_type (void)
+{
+  static GType type = 0;
+
+  if (!type)
+    {
+      static const GTypeInfo typeInfo =
+      {
+        sizeof (AtkMiscClass),
+        (GBaseInitFunc) NULL,
+        (GBaseFinalizeFunc) NULL,
+        (GClassInitFunc) atk_misc_class_init,
+        (GClassFinalizeFunc) NULL,
+        NULL,
+        sizeof (AtkMisc),
+        0,
+        (GInstanceInitFunc) NULL,
+      } ;
+      type = g_type_register_static (G_TYPE_OBJECT, "AtkMisc", &typeInfo, 0) ;
+    }
+  return type;
+}
+
+static void
+atk_misc_class_init (AtkMiscClass *klass)
+{
+  klass->threads_enter = NULL;
+  klass->threads_leave = NULL;
+}
+
+/**
+ * atk_misc_threads_enter:
+ * @misc: an AtkMisc instance for this application. 
+ *
+ * Take the thread mutex for the GUI toolkit, 
+ * if one exists. 
+ * (This method is implemented by the toolkit ATK implementation layer;
+ *  for instance, for GTK+, GAIL implements this via GDK_THREADS_ENTER).
+ *
+ * Since: ATK 1.13
+ *
+ **/
+void
+atk_misc_threads_enter (AtkMisc *misc)
+{
+  AtkMiscClass *klass = g_type_class_ref (ATK_TYPE_MISC);
+  if (klass->threads_enter)
+    {
+      klass->threads_enter (misc);
+    }
+  g_type_class_unref (klass);
+}
+
+/**
+ * atk_misc_threads_leave:
+ * @misc: an AtkMisc instance for this application. 
+ *
+ * Release the thread mutex for the GUI toolkit, 
+ * if one exists. This method, and atk_misc_threads_enter, 
+ * are needed in some situations by threaded application code which 
+ * services ATK requests, since fulfilling ATK requests often
+ * requires calling into the GUI toolkit.  If a long-running or
+ * potentially blocking call takes place inside such a block, it should
+ * be bracketed by atk_misc_threads_leave/atk_misc_threads_enter calls.
+ * (This method is implemented by the toolkit ATK implementation layer;
+ *  for instance, for GTK+, GAIL implements this via GDK_THREADS_LEAVE).
+ *
+ * Since: ATK 1.13
+ *
+ **/
+void
+atk_misc_threads_leave (AtkMisc *misc)
+{
+  AtkMiscClass *klass = g_type_class_ref (ATK_TYPE_MISC);
+  if (klass->threads_leave)
+    {
+      klass->threads_leave (misc);
+    }
+  g_type_class_unref (klass);
+}
+
+AtkMisc *atk_misc_instance = NULL;
+
+/**
+ * atk_misc_get_instance:
+ *
+ * Obtain the singleton instance of AtkMisc for this application.
+ * 
+ * Since: ATK 1.13
+ *
+ * Returns: The singleton instance of AtkMisc for this application.
+ *
+ **/
+const AtkMisc *
+atk_misc_get_instance (void)
+{
+  return atk_misc_instance;
+}

Property changes on: atk/atkmisc.c
___________________________________________________________________
Name: svn:executable
   + *

Index: configure.in
===================================================================
--- configure.in	(.../tags/gnome-2-16)	(revision 1133)
+++ configure.in	(.../trunk)	(revision 1133)
@@ -16,8 +16,8 @@
 
 dnl The triplet 
 m4_define([atk_major_version], [1])
-m4_define([atk_minor_version], [12])
-m4_define([atk_micro_version], [4])
+m4_define([atk_minor_version], [13])
+m4_define([atk_micro_version], [0])
 m4_define([atk_version],
           [atk_major_version.atk_minor_version.atk_micro_version])
 
Index: ChangeLog
===================================================================
--- ChangeLog	(.../tags/gnome-2-16)	(revision 1133)
+++ ChangeLog	(.../trunk)	(revision 1133)
@@ -1,3 +1,20 @@
+2006-01-08  Bill Haneman <bill.haneman@sun.com>
+
+	* configure.in: Revved to 1.13.0, since new API
+	has been added for gnome 2.17.5.  (ATK is
+	now API frozen for gnome 2.18.)
+
+	* atk/atkmisc.[ch]: New class which provides
+	miscellaneous utilities including
+	(atk_misc_threads_enter, atk_misc_thread_leave): New, 
+	see bug #329454.
+
+	* docs/tmpl/atkmisc.sgml:
+	Docs for AtkMisc.
+	
+	* docs/tmpl/atkhyperlinkimpl.sgml: Added minimal
+	doc for AtkHyperlinkImpl struct.
+	
 2006-12-05  Li Yuan <li.yuan@sun.com>
 
 	* configure.in, NEWS:
Index: docs/atk-sections.txt
===================================================================
--- docs/atk-sections.txt	(.../tags/gnome-2-16)	(revision 1133)
+++ docs/atk-sections.txt	(.../trunk)	(revision 1133)
@@ -562,6 +562,23 @@
 </SECTION>
 
 <SECTION>
+<FILE>atkmisc</FILE>
+<TITLE>AtkMisc</TITLE>
+AtkMisc
+atk_misc_threads_enter
+atk_misc_threads_leave
+atk_misc_get_instance
+<SUBSECTION Standard>
+ATK_MISC
+ATK_IS_MISC
+ATK_TYPE_MISC
+ATK_MISC_CLASS
+ATK_IS_MISC_CLASS
+ATK_MISC_GET_CLASS
+AtkMiscClass
+</SECTION>
+
+<SECTION>
 <FILE>atkgobjectaccessible</FILE>
 <TITLE>AtkGObjectAccessible</TITLE>
 AtkGObjectAccessible
Index: docs/tmpl/atkhyperlinkimpl.sgml
===================================================================
--- docs/tmpl/atkhyperlinkimpl.sgml	(.../tags/gnome-2-16)	(revision 1133)
+++ docs/tmpl/atkhyperlinkimpl.sgml	(.../trunk)	(revision 1133)
@@ -33,7 +33,11 @@
 
 <!-- ##### STRUCT AtkHyperlinkImpl ##### -->
 <para>
-
+A queryable interface which allows AtkHyperlink instances associated with an 
+AtkObject to be obtained.  AtkHyperlinkImpl corresponds to AT-SPI's 
+Hyperlink interface, and differs from AtkHyperlink in that AtkHyperlink 
+is an object type, rather than an interface, and thus cannot be directly 
+queried.
 </para>
 
