summaryrefslogtreecommitdiffstats
path: root/PC/os2emx/pythonpm.c
diff options
context:
space:
mode:
Diffstat (limited to 'PC/os2emx/pythonpm.c')
-rw-r--r--PC/os2emx/pythonpm.c124
1 files changed, 0 insertions, 124 deletions
diff --git a/PC/os2emx/pythonpm.c b/PC/os2emx/pythonpm.c
deleted file mode 100644
index ba47f4b..0000000
--- a/PC/os2emx/pythonpm.c
+++ /dev/null
@@ -1,124 +0,0 @@
-/* OS/2 PM main program - creates a hidden window, and starts Python
- * interpreter in a separate thread, so that Python scripts can be
- * run in PM process space without a console Window. The interpreter
- * is incorporated by linking in the Python DLL.
- *
- * As it stands, I don't think this is adequate for supporting Python
- * GUI modules, as the Python thread doesn't have its own message
- * queue - which is required of threads that want to create/use
- * PM windows.
- *
- * This code owes a lot to "OS/2 Presentation Manager Programming", by
- * Charles Petzold.
- *
- * Andrew MacIntyre <andymac@bullseye.apana.org.au>, August 2001.
- * Released under the terms of the Python 2.1.1 licence - see the LICENCE
- * file in the Python v2.1.1 (or later) source distribution.
- * Copyright assigned to the Python Software Foundation, 2001.
- */
-
-#define INCL_DOS
-#define INCL_WIN
-#include <os2.h>
-#include <process.h>
-
-#include "Python.h"
-
-/* use structure to pass command line to Python thread */
-typedef struct
-{
- int argc;
- char **argv;
- HWND Frame;
- int running;
-} arglist;
-
-/* make this a global to simplify access.
- * it should only be set from the Python thread, or by the code that
- * initiates the Python thread when the thread cannot be created.
- */
-int PythonRC;
-
-extern DL_EXPORT(int) Py_Main(int, char **);
-void PythonThread(void *);
-
-int
-main(int argc, char **argv)
-{
- ULONG FrameFlags = FCF_TITLEBAR |
- FCF_SYSMENU |
- FCF_SIZEBORDER |
- FCF_HIDEBUTTON |
- FCF_SHELLPOSITION |
- FCF_TASKLIST;
- HAB hab;
- HMQ hmq;
- HWND Client;
- QMSG qmsg;
- arglist args;
- int python_tid;
-
- /* init PM and create message queue */
- hab = WinInitialize(0);
- hmq = WinCreateMsgQueue(hab, 0);
-
- /* create a (hidden) Window to house the window procedure */
- args.Frame = WinCreateStdWindow(HWND_DESKTOP,
- 0,
- &FrameFlags,
- NULL,
- "PythonPM",
- 0L,
- 0,
- 0,
- &Client);
-
- /* run Python interpreter in a thread */
- args.argc = argc;
- args.argv = argv;
- args.running = 0;
- if (-1 == (python_tid = _beginthread(PythonThread, NULL, 1024 * 1024, &args)))
- {
- /* couldn't start thread */
- WinAlarm(HWND_DESKTOP, WA_ERROR);
- PythonRC = 1;
- }
- else
- {
- /* process PM messages, until Python exits */
- while (WinGetMsg(hab, &qmsg, NULLHANDLE, 0, 0))
- WinDispatchMsg(hab, &qmsg);
- if (args.running > 0)
- DosKillThread(python_tid);
- }
-
- /* destroy window, shutdown message queue and PM */
- WinDestroyWindow(args.Frame);
- WinDestroyMsgQueue(hmq);
- WinTerminate(hab);
-
- return PythonRC;
-}
-
-void PythonThread(void *argl)
-{
- HAB hab;
- arglist *args;
-
- /* PM initialisation */
- hab = WinInitialize(0);
-
- /* start Python */
- args = (arglist *)argl;
- args->running = 1;
- PythonRC = Py_Main(args->argc, args->argv);
-
- /* enter a critical section and send the termination message */
- DosEnterCritSec();
- args->running = 0;
- WinPostMsg(args->Frame, WM_QUIT, NULL, NULL);
-
- /* shutdown PM and terminate thread */
- WinTerminate(hab);
- _endthread();
-}