aboutsummaryrefslogtreecommitdiff
path: root/libjava/gnu/awt/gtk/natGtkToolkit.cc
blob: e7949395235d4793e40ee7e33ec2be6eaab6dda8 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
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 ();
}