classpath-patches
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[cp-patches] import jawt from libgcj


From: Thomas Fitzsimmons
Subject: [cp-patches] import jawt from libgcj
Date: Fri, 19 Aug 2005 11:30:15 -0400

Hi,

I finished the jawt import from libgcj.  "make distcheck" passed.

Tom

2005-08-19  Thomas Fitzsimmons  <address@hidden>

        * configure.ac: Generate native/jawt/Makefile.
        * include/jawt.h: Import from libgcj.
        * include/jawt_md.h: Likewise.
        * native/Makefile.am (JAWTDIR): New variable.
        * native/jawt: New directory.
        * native/jawt/.cvsignore: New file.
        * native/jawt/Makefile.am: Likewise.
        * native/jawt/jawt.c: Import from libgcj.

Index: configure.ac
===================================================================
RCS file: /cvsroot/classpath/classpath/configure.ac,v
retrieving revision 1.99
diff -u -r1.99 configure.ac
--- configure.ac        17 Aug 2005 02:03:31 -0000      1.99
+++ configure.ac        19 Aug 2005 14:37:07 -0000
@@ -468,6 +468,7 @@
 include/Makefile
 native/Makefile
 native/fdlibm/Makefile
+native/jawt/Makefile
 native/jni/Makefile
 native/jni/classpath/Makefile
 native/jni/java-io/Makefile
Index: include/jawt.h
===================================================================
RCS file: include/jawt.h
diff -N include/jawt.h
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ include/jawt.h      19 Aug 2005 14:37:07 -0000
@@ -0,0 +1,101 @@
+/* jawt.h -- the machine-independent parts of the AWT Native Interface
+   Copyright (C) 2005 Free Software Foundation, Inc.
+
+   This file is part of GNU Classpath.
+
+   GNU Classpath is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 2, or (at your option)
+   any later version.
+ 
+   GNU Classpath 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
+   General Public License for more details.
+
+   You should have received a copy of the GNU General Public License
+   along with GNU Classpath; see the file COPYING.  If not, write to the
+   Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+   02110-1301 USA.
+
+   Linking this library statically or dynamically with other modules is
+   making a combined work based on this library.  Thus, the terms and
+   conditions of the GNU General Public License cover the whole
+   combination.
+
+   As a special exception, the copyright holders of this library give you
+   permission to link this library with independent modules to produce an
+   executable, regardless of the license terms of these independent
+   modules, and to copy and distribute the resulting executable under
+   terms of your choice, provided that you also meet, for each linked
+   independent module, the terms and conditions of the license of that
+   module.  An independent module is a module which is not derived from
+   or based on this library.  If you modify this library, you may extend
+   this exception to your version of the library, but you are not
+   obligated to do so.  If you do not wish to do so, delete this
+   exception statement from your version. */
+
+
+/*
+ * The AWT Native Interface allows direct access to native screen
+ * resources from within a Canvas's paint method.
+ */
+
+#ifndef __jawt_h__
+#define __jawt_h__
+
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+
+#define JAWT_VERSION_1_3 0x10003
+#define JAWT_VERSION_1_4 0x10004
+
+#define JAWT_LOCK_ERROR 0x1
+#define JAWT_LOCK_CLIP_CHANGED 0x2
+#define JAWT_LOCK_BOUNDS_CHANGED 0x4
+#define JAWT_LOCK_SURFACE_CHANGED 0x8
+
+struct _JAWT_DrawingSurfaceInfo
+{
+  void* platformInfo;
+};
+
+struct _JAWT_DrawingSurface
+{
+  jint (JNICALL* Lock) (struct _JAWT_DrawingSurface*);
+  void (JNICALL* Unlock) (struct _JAWT_DrawingSurface*);
+
+  struct _JAWT_DrawingSurfaceInfo* (JNICALL* GetDrawingSurfaceInfo) (struct 
_JAWT_DrawingSurface*);
+  void (JNICALL* FreeDrawingSurfaceInfo) (struct _JAWT_DrawingSurfaceInfo*);
+
+  struct _JAWT_DrawingSurfaceInfo* surface_info;
+
+  /* An object we're going to use for locking the surface.  */
+  jobject lock;
+
+  /* FIXME: also include bounding rectangle of drawing surface. */
+  /* FIXME: also include current clipping region. */
+};
+
+struct _JAWT
+{
+  jint version;
+  struct _JAWT_DrawingSurface* (JNICALL* GetDrawingSurface) (JNIEnv*, jobject);
+  void (JNICALL* FreeDrawingSurface) (struct _JAWT_DrawingSurface*);
+  void (JNICALL *Lock) (JNIEnv*);
+  void (JNICALL *Unlock) (JNIEnv*);
+};
+
+typedef struct _JAWT_DrawingSurfaceInfo JAWT_DrawingSurfaceInfo;
+typedef struct _JAWT_DrawingSurface JAWT_DrawingSurface;
+typedef struct _JAWT JAWT;
+
+JNIEXPORT jboolean JNICALL JAWT_GetAWT (JNIEnv* env, struct _JAWT* awt);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __jawt_h__ */
Index: include/jawt_md.h
===================================================================
RCS file: include/jawt_md.h
diff -N include/jawt_md.h
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ include/jawt_md.h   19 Aug 2005 14:37:07 -0000
@@ -0,0 +1,64 @@
+/* jawt_md.h -- the X11-dependent parts of the AWT Native Interface
+   Copyright (C) 2005 Free Software Foundation, Inc.
+
+   This file is part of GNU Classpath.
+
+   GNU Classpath is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 2, or (at your option)
+   any later version.
+ 
+   GNU Classpath 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
+   General Public License for more details.
+
+   You should have received a copy of the GNU General Public License
+   along with GNU Classpath; see the file COPYING.  If not, write to the
+   Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+   02110-1301 USA.
+
+   Linking this library statically or dynamically with other modules is
+   making a combined work based on this library.  Thus, the terms and
+   conditions of the GNU General Public License cover the whole
+   combination.
+
+   As a special exception, the copyright holders of this library give you
+   permission to link this library with independent modules to produce an
+   executable, regardless of the license terms of these independent
+   modules, and to copy and distribute the resulting executable under
+   terms of your choice, provided that you also meet, for each linked
+   independent module, the terms and conditions of the license of that
+   module.  An independent module is a module which is not derived from
+   or based on this library.  If you modify this library, you may extend
+   this exception to your version of the library, but you are not
+   obligated to do so.  If you do not wish to do so, delete this
+   exception statement from your version. */
+
+
+#ifndef __jawt_md_h__
+#define __jawt_md_h__
+
+#include <jni.h>
+#include <jawt.h>
+#include <X11/Xlib.h>
+
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+
+struct _JAWT_X11DrawingSurfaceInfo
+{
+  Display* display;
+  Drawable drawable;
+  VisualID visualID;
+};
+
+typedef struct _JAWT_X11DrawingSurfaceInfo JAWT_X11DrawingSurfaceInfo;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __jawt_md_h__ */
Index: native/Makefile.am
===================================================================
RCS file: /cvsroot/classpath/classpath/native/Makefile.am,v
retrieving revision 1.24
diff -u -r1.24 Makefile.am
--- native/Makefile.am  15 Oct 2004 07:13:16 -0000      1.24
+++ native/Makefile.am  19 Aug 2005 14:37:08 -0000
@@ -4,6 +4,10 @@
   JNIDIR = jni
 endif
 
-SUBDIRS = fdlibm $(JNIDIR) target
-DIST_SUBDIRS = fdlibm jni target
+if CREATE_GTK_PEER_LIBRARIES
+  JAWTDIR = jawt
+endif
+
+SUBDIRS = fdlibm $(JNIDIR) $(JAWTDIR) target
+DIST_SUBDIRS = fdlibm jni jawt target
 
Index: native/jawt/.cvsignore
===================================================================
RCS file: native/jawt/.cvsignore
diff -N native/jawt/.cvsignore
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ native/jawt/.cvsignore      19 Aug 2005 14:37:08 -0000
@@ -0,0 +1,8 @@
+*.o
+*.a
+*.lo
+*.la
+.libs
+.deps
+Makefile
+Makefile.in
Index: native/jawt/Makefile.am
===================================================================
RCS file: native/jawt/Makefile.am
diff -N native/jawt/Makefile.am
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ native/jawt/Makefile.am     19 Aug 2005 14:37:08 -0000
@@ -0,0 +1,12 @@
+pkglib_LTLIBRARIES = libjawtgnu.la
+
+libjawtgnu_la_SOURCES = jawt.c
+libjawtgnu_la_LIBADD = $(top_builddir)/native/jni/gtk-peer/libgtkpeer.la
+
+AM_LDFLAGS = @CLASSPATH_MODULE@ @GTK_LIBS@ @CAIRO_LIBS@ @PANGOFT2_LIBS@ 
@X_LIBS@ -lXtst
+AM_CPPFLAGS = @CLASSPATH_INCLUDES@
+
+# Just the WARNING_CFLAGS. We cannot use the strict flags since the gtk
+# headers contain broken prototypes (by design, see gtkitemfactory.h).
+AM_CFLAGS = @WARNING_CFLAGS@ @ERROR_CFLAGS@ \
+            @GTK_CFLAGS@ @CAIRO_CFLAGS@ @PANGOFT2_CFLAGS@
Index: native/jawt/jawt.c
===================================================================
RCS file: native/jawt/jawt.c
diff -N native/jawt/jawt.c
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ native/jawt/jawt.c  19 Aug 2005 14:37:08 -0000
@@ -0,0 +1,178 @@
+/* jawt.c -- X11 implementation of the AWT Native Interface
+   Copyright (C) 2005 Free Software Foundation, Inc.
+
+   This file is part of GNU Classpath.
+
+   GNU Classpath is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 2, or (at your option)
+   any later version.
+
+   GNU Classpath 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
+   General Public License for more details.
+
+   You should have received a copy of the GNU General Public License
+   along with GNU Classpath; see the file COPYING.  If not, write to the
+   Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+   02110-1301 USA.
+
+   Linking this library statically or dynamically with other modules is
+   making a combined work based on this library.  Thus, the terms and
+   conditions of the GNU General Public License cover the whole
+   combination.
+
+   As a special exception, the copyright holders of this library give you
+   permission to link this library with independent modules to produce an
+   executable, regardless of the license terms of these independent
+   modules, and to copy and distribute the resulting executable under
+   terms of your choice, provided that you also meet, for each linked
+   independent module, the terms and conditions of the license of that
+   module.  An independent module is a module which is not derived from
+   or based on this library.  If you modify this library, you may extend
+   this exception to your version of the library, but you are not
+   obligated to do so.  If you do not wish to do so, delete this
+   exception statement from your version. */
+
+#include <stdlib.h>
+#include <jni.h>
+#include <jawt.h>
+#include <jawt_md.h>
+#include "classpath_jawt.h"
+
+static jint (JNICALL _Jv_Lock) (JAWT_DrawingSurface* surface);
+static void (JNICALL _Jv_Unlock) (JAWT_DrawingSurface* surface);
+static JAWT_DrawingSurfaceInfo* (JNICALL _Jv_GetDrawingSurfaceInfo)
+     (JAWT_DrawingSurface* surface);
+static void (JNICALL _Jv_FreeDrawingSurfaceInfo)
+     (JAWT_DrawingSurfaceInfo* surface_info);
+static JAWT_DrawingSurface* (JNICALL _Jv_GetDrawingSurface) (JNIEnv* env,
+                                                            jobject canvas);
+static void (JNICALL _Jv_FreeDrawingSurface) (JAWT_DrawingSurface* surface);
+static void (JNICALL _Jv_AWTLock) (JNIEnv*);
+static void (JNICALL _Jv_AWTUnlock) (JNIEnv*);
+
+JNIEXPORT jboolean JNICALL
+JAWT_GetAWT (JNIEnv* env, JAWT* awt)
+{
+  jint retrieved_version;
+
+  retrieved_version = classpath_jawt_get_awt_version ();
+
+  if (awt->version > retrieved_version)
+    return JNI_FALSE;
+
+  awt->GetDrawingSurface = _Jv_GetDrawingSurface;
+  awt->FreeDrawingSurface = _Jv_FreeDrawingSurface;
+  awt->Lock = _Jv_AWTLock;
+  awt->Unlock = _Jv_AWTUnlock;
+
+  return JNI_TRUE;
+}
+
+/* JAWT_DrawingSurface functions */
+
+static jint
+(JNICALL _Jv_Lock) (JAWT_DrawingSurface* surface)
+{
+  return classpath_jawt_object_lock (surface->lock);
+}
+
+static void
+(JNICALL _Jv_Unlock) (JAWT_DrawingSurface* surface)
+{
+  classpath_jawt_object_unlock (surface->lock);
+}
+
+static JAWT_DrawingSurfaceInfo*
+(JNICALL _Jv_GetDrawingSurfaceInfo) (JAWT_DrawingSurface* surface)
+{
+  if (surface == NULL)
+    return NULL;
+
+  return surface->surface_info;
+}
+
+static void
+(JNICALL _Jv_FreeDrawingSurfaceInfo) (JAWT_DrawingSurfaceInfo* surface_info)
+{
+  JAWT_X11DrawingSurfaceInfo* surface_info_x11;
+
+  if (surface_info == NULL)
+    return;
+
+  surface_info_x11 = (JAWT_X11DrawingSurfaceInfo*) surface_info->platformInfo;
+
+  surface_info_x11->display = NULL;
+  surface_info_x11->drawable = 0;
+  surface_info_x11->visualID = 0;
+
+  free (surface_info->platformInfo);
+  free (surface_info);
+  surface_info = NULL;
+}
+
+/* JAWT functions */
+
+static JAWT_DrawingSurface*
+(JNICALL _Jv_GetDrawingSurface) (JNIEnv* env, jobject canvas)
+{
+  JAWT_DrawingSurface* surface;
+  JAWT_X11DrawingSurfaceInfo* surface_info_x11;
+
+  surface = (JAWT_DrawingSurface*) malloc (sizeof (JAWT_DrawingSurface));
+
+  if (surface == NULL)
+    return NULL;
+
+  /* initialize function pointers */
+  surface->GetDrawingSurfaceInfo = _Jv_GetDrawingSurfaceInfo;
+  surface->FreeDrawingSurfaceInfo = _Jv_FreeDrawingSurfaceInfo;
+
+  surface->Lock = _Jv_Lock;
+  surface->Unlock = _Jv_Unlock;
+
+  surface->surface_info = (JAWT_DrawingSurfaceInfo*) malloc (sizeof 
(JAWT_DrawingSurfaceInfo));
+
+  surface->lock = classpath_jawt_create_lock ();
+
+  if (surface->surface_info == NULL)
+    return NULL;
+
+  surface->surface_info->platformInfo = malloc (sizeof 
(JAWT_X11DrawingSurfaceInfo));
+
+  if (surface->surface_info->platformInfo == NULL)
+    return NULL;
+
+  surface_info_x11 = (JAWT_X11DrawingSurfaceInfo*) 
surface->surface_info->platformInfo;
+
+  surface_info_x11->display = classpath_jawt_get_default_display (env, canvas);
+  surface_info_x11->drawable = classpath_jawt_get_drawable (env, canvas);
+  surface_info_x11->visualID = classpath_jawt_get_visualID (env, canvas);
+
+  /* FIXME: also include bounding rectangle of drawing surface */
+  /* FIXME: also include current clipping region */
+
+  return surface;
+}
+
+static void
+(JNICALL _Jv_FreeDrawingSurface) (JAWT_DrawingSurface* surface)
+{
+  classpath_jawt_destroy_lock (surface->lock);
+  free (surface);
+}
+
+static void
+(JNICALL _Jv_AWTLock) (JNIEnv* env)
+{
+  classpath_jawt_lock ();
+}
+
+static void
+(JNICALL _Jv_AWTUnlock) (JNIEnv* env)
+{
+  classpath_jawt_unlock ();
+}
+

reply via email to

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