diff options
Diffstat (limited to 'libjava/gnu/awt/gtk/natGtkToolkit.cc')
-rw-r--r-- | libjava/gnu/awt/gtk/natGtkToolkit.cc | 75 |
1 files changed, 75 insertions, 0 deletions
diff --git a/libjava/gnu/awt/gtk/natGtkToolkit.cc b/libjava/gnu/awt/gtk/natGtkToolkit.cc new file mode 100644 index 00000000000..e7949395235 --- /dev/null +++ b/libjava/gnu/awt/gtk/natGtkToolkit.cc @@ -0,0 +1,75 @@ +// This file was created by `gcjh -stubs'. -*- c++ -*- +// +// This file is intended to give you a head start on implementing native +// methods using CNI. +// Be aware: running `gcjh -stubs ' once more for this class may +// overwrite any edits you have made to this file. + +#include <java/awt/Dimension.h> + +#include <gnu/awt/gtk/GtkToolkit.h> +#include <gcj/cni.h> + +#include <gtk/gtk.h> + + +// GTK requires the program's argc and argv variables. +extern char **_Jv_argv; +extern int _Jv_argc; + +// Call gtk_init. It is very important that this happen before any other +// gtk calls. +void +gnu::awt::gtk::GtkToolkit::gtkInit () +{ + // Initialize GLib in thread-safe mode. We assume that GLib is using the + // same native threads library as libgcj. Refer to comments in + // GtkComponentPeer constructor. + g_thread_init (NULL); + gtk_init (&_Jv_argc, &_Jv_argv); +} + +void +gnu::awt::gtk::GtkToolkit::beep () +{ + GDK_THREADS_ENTER (); + gdk_beep (); + GDK_THREADS_LEAVE (); +} + +jint +gnu::awt::gtk::GtkToolkit::getScreenResolution () +{ + jint res; + + GDK_THREADS_ENTER (); + + res = (int) (gdk_screen_width () / (gdk_screen_width_mm () / 25.4)); + + GDK_THREADS_LEAVE (); + return res; +} + +::java::awt::Dimension * +gnu::awt::gtk::GtkToolkit::getScreenSize () +{ + ::java::awt::Dimension *dim = new ::java::awt::Dimension (); + + GDK_THREADS_ENTER (); + + dim->width = gdk_screen_width (); + dim->height = gdk_screen_height (); + + GDK_THREADS_LEAVE (); + return dim; +} + +void +gnu::awt::gtk::GtkToolkit::sync () +{ + GDK_THREADS_ENTER (); + gdk_flush (); + GDK_THREADS_LEAVE (); +} + + |