QApplication is basically a singleton, and an accessor macro is already 
defined in #include <QApplication>. Therefore our local copy can go away.

http://doc.trolltech.com/4.1/qapplication.html#qApp
--- classpath.orig/native/jni/qt-peer/mainqtthread.cpp
+++ classpath/native/jni/qt-peer/mainqtthread.cpp
@@ -43,7 +43,6 @@
 #include "mainthreadinterface.h"
 
 MainThreadInterface *mainThread;
-QApplication *qApplication;
 
 
 /**
@@ -75,21 +74,19 @@
       argv[0] = (char *)malloc(10 * sizeof(char));
       strncpy(argv[0], " \0", 3);
     }
-  QApplication *qtApp = new QApplication( *argc, argv );
-  assert( qtApp );
-
-  qApplication = qtApp;
+  QApplication( *argc, argv );
+  assert( qApp );
 
   if( theme != NULL)
     env->ReleaseStringUTFChars( theme, argv[1] );
 
-  mainThread = new MainThreadInterface( qtApp );
+  mainThread = new MainThreadInterface( qApp );
 
   jclass cls = env->GetObjectClass(obj);
   jfieldID nofid = env->GetFieldID( cls, "mainThreadInterface", "J" );
   env->SetLongField( obj, nofid, (jlong)mainThread );
 
-  return (jlong)qtApp;
+  return (jlong)qApp;
 }
 
 /*
--- classpath.orig/native/jni/qt-peer/qtcomponentpeer.cpp
+++ classpath/native/jni/qt-peer/qtcomponentpeer.cpp
@@ -48,8 +48,6 @@
 #include "componentevent.h"
 #include "qtfont.h"
 
-extern QApplication *qApplication;
-
 // Java Cursor types.
 #define DEFAULT_CURSOR 	        0
 #define CROSSHAIR_CURSOR 	1
@@ -340,7 +338,7 @@
 {
   QWidget *widget = (QWidget *) getNativeObject( env, obj );
   assert( widget );
-  return (jint) qApplication->desktop()->screenNumber( widget );
+  return (jint) qApp->desktop()->screenNumber( widget );
 }
 
 /*
--- classpath.orig/native/jni/qt-peer/qtscreendevice.cpp
+++ classpath/native/jni/qt-peer/qtscreendevice.cpp
@@ -41,14 +41,12 @@
 #include <gnu_java_awt_peer_qt_QtScreenDevice.h>
 #include "nativewrapper.h"
 
-extern QApplication *qApplication;
-
 /*
  */
 JNIEXPORT void JNICALL Java_gnu_java_awt_peer_qt_QtScreenDevice_init
 (JNIEnv *env, jobject obj, jint id)
 {
-  QWidget *widget = qApplication->desktop()->screen( id );
+  QWidget *widget = qApp->desktop()->screen( id );
   assert( widget );
   setNativeObject(env, obj, widget);
 }
--- classpath.orig/native/jni/qt-peer/qttoolkit.cpp
+++ classpath/native/jni/qt-peer/qttoolkit.cpp
@@ -45,8 +45,6 @@
 #include "mainthreadinterface.h"
 #include "qtstrings.h"
 
-extern QApplication *qApplication;
-
 /**
  * Calls syncX();
  */
@@ -73,7 +71,7 @@
 JNIEXPORT void JNICALL Java_gnu_java_awt_peer_qt_QtToolkit_beep
 (JNIEnv *env, jobject obj)
 {
-  qApplication->beep();
+  qApp->beep();
 }
 
 /**
@@ -82,7 +80,7 @@
 JNIEXPORT jint JNICALL Java_gnu_java_awt_peer_qt_QtToolkit_defaultScreen
 (JNIEnv *env, jobject obj)
 {
-  return (jint) qApplication->desktop()->primaryScreen();
+  return (jint) qApp->desktop()->primaryScreen();
 }
 
 /**
@@ -91,7 +89,7 @@
 JNIEXPORT jint JNICALL Java_gnu_java_awt_peer_qt_QtToolkit_numScreens
 (JNIEnv *env, jobject obj)
 { 
-  return (jint) qApplication->desktop()->numScreens();
+  return (jint) qApp->desktop()->numScreens();
 }
 
 /*
@@ -135,7 +133,7 @@
 JNIEXPORT jint JNICALL Java_gnu_java_awt_peer_qt_QtToolkit_getScreenResolution
 (JNIEnv *env, jobject obj)
 {
-  QDesktopWidget *d = qApplication->desktop();
+  QDesktopWidget *d = qApp->desktop();
 
   // Java assumes square pixels. Qt, more intelligently, does not.
   // What to do? Well.. Average them?
@@ -151,6 +149,6 @@
 (JNIEnv *env, jobject obj)
 {
   // SyncX needs to be called from the main thread.
-  mainThread->postEventToMain( new AWTSyncEvent( qApplication ) );
+  mainThread->postEventToMain( new AWTSyncEvent( qApp ) );
 }
 

Reply via email to