diff options
author | Silenio Quarti | 2013-12-06 16:18:21 +0000 |
---|---|---|
committer | Silenio Quarti | 2013-12-06 16:18:21 +0000 |
commit | 72c26472b6269957b427fbc4b5251d5f3d047745 (patch) | |
tree | 328936e99519431252072c5262fbeb7a3e3c15ea /bundles/org.eclipse.equinox.executable/library/motif/eclipseMotif.c | |
parent | 38ce3e64440c1f5b4d2414987af381845829f78d (diff) | |
download | rt.equinox.framework-72c26472b6269957b427fbc4b5251d5f3d047745.tar.gz rt.equinox.framework-72c26472b6269957b427fbc4b5251d5f3d047745.tar.xz rt.equinox.framework-72c26472b6269957b427fbc4b5251d5f3d047745.zip |
Bug 420471 - rt.equinox.framework/bundles/org.eclipse.equinox.executable should be removed (from master)I20131209-0800I20131208-2000
Diffstat (limited to 'bundles/org.eclipse.equinox.executable/library/motif/eclipseMotif.c')
-rw-r--r-- | bundles/org.eclipse.equinox.executable/library/motif/eclipseMotif.c | 336 |
1 files changed, 0 insertions, 336 deletions
diff --git a/bundles/org.eclipse.equinox.executable/library/motif/eclipseMotif.c b/bundles/org.eclipse.equinox.executable/library/motif/eclipseMotif.c deleted file mode 100644 index 049cb7837..000000000 --- a/bundles/org.eclipse.equinox.executable/library/motif/eclipseMotif.c +++ /dev/null @@ -1,336 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2000, 2010 IBM Corporation and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * IBM Corporation - initial API and implementation - * Kevin Cornell (Rational Software Corporation) - *******************************************************************************/ - - -/* UNIX/Motif specific logic for displaying the splash screen. */ -#include "eclipseCommon.h" -#include "eclipseMozilla.h" -#include "eclipseMotif.h" -#include "eclipseOS.h" -#include "eclipseUtil.h" -#include "NgImage.h" - -#include <sys/types.h> -#include <sys/stat.h> -#include <sys/wait.h> -#include <sys/ioctl.h> -#ifdef SOLARIS -#include <sys/filio.h> -#endif -#include <unistd.h> -#include <errno.h> -#include <signal.h> -#include <stdio.h> -#include <string.h> -#include <locale.h> -#include <stdlib.h> - -/* Global Variables */ -char* defaultVM = "java"; -char* vmLibrary = "libjvm.so"; -char* shippedVMDir = "jre/bin/"; - -/* Define the special arguments for the various Java VMs. */ -static char* argVM_JAVA[] = { NULL }; -#if AIX -static char* argVM_JAVA_AIX131[] = { "-Xquickstart", NULL }; -#endif -static char* argVM_J9[] = { "-jit", "-mca:1024", "-mco:1024", "-mn:256", "-mo:4096", - "-moi:16384", "-mx:262144", "-ms:16", "-mr:16", NULL }; - -/* Define local variables for the main window. */ -extern XtAppContext appContext; -extern Widget topWindow; - -static pid_t jvmProcess = 0; -static int jvmExitCode; - -/* Define local variables for handling the splash window and its image. */ -static Widget shellHandle = 0; - -extern void centreShell( Widget widget, Widget expose ); - -#ifdef NETSCAPE_FIX -void fixEnvForNetscape(); -#endif /* NETSCAPE_FIX */ - -void takeDownSplashCB( Widget shell, XtPointer app_data, XtPointer widget_data ) { - shellHandle = NULL; -} - -/* Show the Splash Window - * - * Create the splash window, load the pixmap and display the splash window. - */ -int showSplash( const char* featureImage ) -{ - int x, y; - unsigned int width, height, depth, border; - ArgList args; - unsigned int nArgs; - Pixmap splashPixmap = 0; - Window root; - Display *xDisplay; - Screen* screen; - Widget scrolledHandle, drawingHandle, image; - - if (shellHandle != 0) - return 0; /* already showing splash */ - - if (initialArgv == NULL) - initialArgc = 0; - - if (initWindowSystem(&initialArgc, initialArgv, 1) != 0) { - return -1; - } - - xDisplay = motif_XtDisplay(topWindow); - screen = motif.XDefaultScreenOfDisplay( xDisplay ); - if (featureImage != NULL) - { - splashPixmap = loadBMPImage(xDisplay, screen, (char*)featureImage); - } - /* If the splash image could not be found, return an error. */ - if (splashPixmap == 0) - return ENOENT; - - motif.XGetGeometry (xDisplay, splashPixmap, &root, &x, &y, &width, &height, &border, &depth); - - /* make sure we never pass more than 20 args */ - args = malloc(10 * sizeof(Arg)); - - nArgs = 0; - /* Note that XtSetArg is a macro, and the 1st argument will be evaluated twice - * so increment nArgs on its own */ - motif_XtSetArg(args[nArgs], XmNmwmDecorations, 0); nArgs++; - motif_XtSetArg(args[nArgs], XmNtitle, getOfficialName()); nArgs++; - motif_XtSetArg(args[nArgs], XmNwidth, width); nArgs++; - motif_XtSetArg(args[nArgs], XmNheight, height); nArgs++; - shellHandle = motif.XtAppCreateShell(getOfficialName(), "", *motif.applicationShellWidgetClass, xDisplay, args, nArgs); - motif.XtAddCallback(shellHandle, XmNdestroyCallback, (XtCallbackProc) takeDownSplashCB, NULL); - - nArgs = 0; - motif_XtSetArg(args[nArgs++], XmNancestorSensitive, 1); - scrolledHandle = motif.XmCreateMainWindow(shellHandle, NULL, args, nArgs); - if(scrolledHandle == 0) - return -1; - motif.XtManageChild(scrolledHandle); - - nArgs = 0; - motif_XtSetArg(args[nArgs], XmNancestorSensitive, 1); nArgs++; - motif_XtSetArg(args[nArgs], XmNborderWidth, 0); nArgs++; - /*motif_XtSetArg(args[nArgs], XmNbackground, 0xFF00FF); nArgs++; */ - motif_XtSetArg(args[nArgs], XmNmarginWidth, 0); nArgs++; - motif_XtSetArg(args[nArgs], XmNmarginHeight, 0); nArgs++; - motif_XtSetArg(args[nArgs], XmNresizePolicy, XmRESIZE_NONE); nArgs++; - motif_XtSetArg(args[nArgs], XmNtraversalOn, 1); nArgs++; - drawingHandle = motif.XmCreateDrawingArea(scrolledHandle, NULL, args, nArgs); - if(drawingHandle == 0) - return -1; - motif.XtManageChild(drawingHandle); - - nArgs = 0; - motif_XtSetArg(args[nArgs], XmNlabelType, XmPIXMAP); nArgs++; - motif_XtSetArg(args[nArgs], XmNlabelPixmap, splashPixmap); nArgs++; - motif_XtSetArg(args[nArgs], XmNwidth, width); nArgs++; - motif_XtSetArg(args[nArgs], XmNheight, height); nArgs++; - motif_XtSetArg(args[nArgs], XmNmarginWidth, 0); nArgs++; - motif_XtSetArg(args[nArgs], XmNmarginHeight, 0); nArgs++; - image = motif.XmCreateLabelGadget ( drawingHandle, "", args, nArgs ); - motif.XtManageChild( image ); - - motif.XtRealizeWidget(shellHandle); - motif.XtSetMappedWhenManaged(shellHandle, 1); - - if(motif_XtIsTopLevelShell(shellHandle)) - motif_XtMapWidget(shellHandle); - else - motif.XtPopup(shellHandle, XtGrabNone); - - /* Centre the splash screen and display it. */ - centreShell( shellHandle, drawingHandle ); - dispatchMessages(); - - free(args); - return 0; -} - -/* Get the window system specific VM arguments */ -char** getArgVM( char* vm ) -{ - char** result; - -#ifdef AIX - char* version; -#endif - - if (isJ9VM( vm )) - return argVM_J9; - - /* Use the default arguments for a standard Java VM */ - result = argVM_JAVA; - -#ifdef AIX - /* Determine whether Java version is 1.3.1 or later */ - version = getVMVersion( vm ); - if (version != NULL) - { - if (versionCmp(version, "1.3.1") >= 0) - result = argVM_JAVA_AIX131; - free(version); - } -#endif - - return result; -} - - -jlong getSplashHandle() { - return (jlong)shellHandle; -} - -void dispatchMessages() { - XtInputMask mask; - if (appContext != NULL && motif.XtAppPending != 0) { - /* Process any outstanding messages */ - while ((mask = motif.XtAppPending(appContext)) != 0) { - motif.XtAppProcessEvent(appContext, mask); - } - } -} - -void takeDownSplash() -{ - if (shellHandle != 0) - { - motif.XtDestroyWidget( shellHandle ); - /*XFlush( XtDisplay( shellHandle ) );*/ - shellHandle = NULL; - } -} - -#ifdef NETSCAPE_FIX -extern char* findCommand( char*); -static const char* XFILESEARCHPATH = "XFILESEARCHPATH"; - -void fixEnvForNetscape() -{ - char* netscapePath = NULL; - char* netscapeResource = NULL; - char* ch; - char* envValue; - struct stat stats; - - /* If netscape appears to be installed */ - netscapePath = findCommand("netscape"); - if (netscapePath != NULL) - { - /* Look for the resource file Netscape.ad in the same directory as "netscape". */ - netscapeResource = malloc( strlen(netscapePath) + 50 ); - strcpy( netscapeResource, netscapePath ); - ch = strrchr( netscapeResource, (int) dirSeparator ); - ch =(ch == NULL ? netscapeResource : (ch+1)); - strcpy( ch, "Netscape.ad" ); - - /* If it does not exist there, try "/opt/netscape/Netscape.ad". */ - if (stat( netscapeResource, &stats ) != 0) - { - strcpy( netscapeResource, "/opt/netscape/Netscape.ad" ); - } - - /* If the resource file exists */ - if (stat( netscapeResource, &stats ) == 0 && (stats.st_mode & S_IFREG) != 0) - { - /* Either define XFILESEARCHPATH or append the Netscape resource file. */ - envValue = getenv( XFILESEARCHPATH ); - if (envValue == NULL) - { - ch = malloc( strlen(XFILESEARCHPATH) + strlen(netscapeResource) + 5 ); - sprintf( ch, "%s=%s", XFILESEARCHPATH, netscapeResource ); - } - else - { - ch = malloc( strlen(XFILESEARCHPATH) + strlen(netscapeResource) + - strlen(envValue) + 5 ); - sprintf( ch, "%s=%s:%s", XFILESEARCHPATH, envValue, netscapeResource ); - } - putenv( ch ); - free( ch ); - } - - /* Clean up. */ - free( netscapePath ); - free( netscapeResource ); - } -} -#endif /* NETSCAPE_FIX */ - -JavaResults* launchJavaVM( char* args[] ) -{ - JavaResults* jvmResults = NULL; - int exitCode; - -#ifdef NETSCAPE_FIX - fixEnvForNetscape(); -#endif /* NETSCAPE_FIX */ -#ifdef MOZILLA_FIX - fixEnvForMozilla(); -#endif /* MOZILLA_FIX */ - -#ifdef LINUX - { - /* put the root of eclipse on the LD_LIBRARY_PATH */ - char * ldPath = (char*)getenv(_T_ECLIPSE("LD_LIBRARY_PATH")); - if (ldPath == NULL) - ldPath = _T_ECLIPSE(""); - char * root = getProgramDir(); - if (root != NULL) { - char * newPath = malloc((strlen(root) + strlen(ldPath) + 2) * sizeof(char)); - sprintf(newPath, "%s%c%s", root, pathSeparator, ldPath); - setenv("LD_LIBRARY_PATH", newPath, 1); - free(newPath); - } - } -#endif - - /* Create a child process for the JVM. */ - jvmProcess = fork(); - if (jvmProcess == 0) - { - /* Child process ... start the JVM */ - execv( args[0], args ); - - /* The JVM would not start ... return error code to parent process. */ - /* TODO, how to distinguish this as a launch problem to the other process? */ - jvmExitCode = errno; - exit( jvmExitCode ); - } - - jvmResults = malloc(sizeof(JavaResults)); - memset(jvmResults, 0, sizeof(JavaResults)); - - /* If the JVM is still running, wait for it to terminate. */ - if (jvmProcess != 0) - { - waitpid(jvmProcess, &exitCode, 0); - /* TODO, this should really be a runResult if we could distinguish the launch problem above */ - jvmResults->launchResult = ((exitCode & 0x00ff) == 0 ? (exitCode >> 8) : exitCode); /* see wait(2) */ - } - - /* Return the exit code from the JVM. */ - return jvmResults; -} - -int reuseWorkbench(_TCHAR** filePath, int timeout) { - /* not yet implemented on motif */ - return -1; -} |