47 |
return CLASSPATH_JAWT_VERSION; |
return CLASSPATH_JAWT_VERSION; |
48 |
} |
} |
49 |
|
|
50 |
|
/* Does not require locking: meant to be called after the drawing |
51 |
|
surface is locked. */ |
52 |
Display* |
Display* |
53 |
classpath_jawt_get_default_display (JNIEnv* env, jobject canvas) |
classpath_jawt_get_default_display (JNIEnv* env, jobject canvas) |
54 |
{ |
{ |
71 |
|
|
72 |
ptr = NSA_GET_PTR (env, peer); |
ptr = NSA_GET_PTR (env, peer); |
73 |
|
|
|
gdk_threads_enter (); |
|
|
|
|
74 |
widget = GTK_WIDGET (ptr); |
widget = GTK_WIDGET (ptr); |
75 |
|
|
76 |
/* widget should be realized before Canvas.paint is called. */ |
if (GTK_WIDGET_REALIZED (widget)) |
77 |
g_assert (GTK_WIDGET_REALIZED (widget)); |
{ |
78 |
|
display = gtk_widget_get_display (widget); |
|
display = gtk_widget_get_display (widget); |
|
79 |
|
|
80 |
xdisplay = GDK_DISPLAY_XDISPLAY (display); |
xdisplay = GDK_DISPLAY_XDISPLAY (display); |
|
|
|
|
gdk_threads_leave (); |
|
81 |
|
|
82 |
return xdisplay; |
return xdisplay; |
83 |
|
} |
84 |
|
else |
85 |
|
return NULL; |
86 |
} |
} |
87 |
|
|
88 |
|
/* Does not require locking: meant to be called after the drawing |
89 |
|
surface is locked. */ |
90 |
VisualID |
VisualID |
91 |
classpath_jawt_get_visualID (JNIEnv* env, jobject canvas) |
classpath_jawt_get_visualID (JNIEnv* env, jobject canvas) |
92 |
{ |
{ |
107 |
|
|
108 |
ptr = NSA_GET_PTR (env, peer); |
ptr = NSA_GET_PTR (env, peer); |
109 |
|
|
|
gdk_threads_enter (); |
|
|
|
|
110 |
widget = GTK_WIDGET (ptr); |
widget = GTK_WIDGET (ptr); |
111 |
|
|
112 |
g_assert (GTK_WIDGET_REALIZED (widget)); |
if (GTK_WIDGET_REALIZED (widget)) |
113 |
|
{ |
114 |
visual = gdk_x11_visual_get_xvisual (gtk_widget_get_visual (widget)); |
visual = gdk_x11_visual_get_xvisual (gtk_widget_get_visual (widget)); |
115 |
g_assert (visual != NULL); |
g_assert (visual != NULL); |
116 |
|
|
117 |
gdk_threads_leave (); |
return visual->visualid; |
118 |
|
} |
119 |
return visual->visualid; |
else |
120 |
|
return (VisualID) NULL; |
121 |
} |
} |
122 |
|
|
123 |
|
/* Does not require locking: meant to be called after the drawing |
124 |
|
surface is locked. */ |
125 |
Drawable |
Drawable |
126 |
classpath_jawt_get_drawable (JNIEnv* env, jobject canvas) |
classpath_jawt_get_drawable (JNIEnv* env, jobject canvas) |
127 |
{ |
{ |
142 |
|
|
143 |
ptr = NSA_GET_PTR (env, peer); |
ptr = NSA_GET_PTR (env, peer); |
144 |
|
|
|
gdk_threads_enter (); |
|
|
|
|
145 |
widget = GTK_WIDGET (ptr); |
widget = GTK_WIDGET (ptr); |
146 |
|
|
147 |
g_assert (GTK_WIDGET_REALIZED (widget)); |
if (GTK_WIDGET_REALIZED (widget)) |
148 |
|
{ |
149 |
drawable = GDK_DRAWABLE_XID (widget->window); |
drawable = GDK_DRAWABLE_XID (widget->window); |
150 |
|
|
151 |
gdk_threads_leave (); |
return drawable; |
152 |
|
} |
153 |
return drawable; |
else |
154 |
} |
return (Drawable) NULL; |
|
|
|
|
jint |
|
|
classpath_jawt_object_lock (jobject lock) |
|
|
{ |
|
|
JNIEnv *env = cp_gtk_gdk_env(); |
|
|
(*env)->MonitorEnter (env, lock); |
|
|
return 0; |
|
|
} |
|
|
|
|
|
void |
|
|
classpath_jawt_object_unlock (jobject lock) |
|
|
{ |
|
|
JNIEnv *env = cp_gtk_gdk_env(); |
|
|
(*env)->MonitorExit (env, lock); |
|
155 |
} |
} |
156 |
|
|
157 |
jint |
jint |
166 |
{ |
{ |
167 |
gdk_threads_leave (); |
gdk_threads_leave (); |
168 |
} |
} |
|
|
|
|
jobject |
|
|
classpath_jawt_create_lock () |
|
|
{ |
|
|
JNIEnv *env = cp_gtk_gdk_env (); |
|
|
jobject lock = (*env)->NewStringUTF (env, "jawt-lock"); |
|
|
NSA_SET_GLOBAL_REF (env, lock); |
|
|
return lock; |
|
|
} |
|
|
|
|
|
void |
|
|
classpath_jawt_destroy_lock (jobject lock) |
|
|
{ |
|
|
JNIEnv *env = cp_gtk_gdk_env (); |
|
|
NSA_DEL_GLOBAL_REF (env, lock); |
|
|
} |
|