Started on GUSI2 and threading support.
This commit is contained in:
parent
5c21420772
commit
2d1306b7cf
|
@ -53,8 +53,9 @@ typedef struct {
|
|||
#pragma lib_export on
|
||||
#endif
|
||||
|
||||
#ifdef USE_GUSI
|
||||
#ifdef USE_GUSI1
|
||||
void PyMac_FixGUSIcd Py_PROTO((void)); /* Workaround for GUSI chdir() call */
|
||||
extern void PyMac_SetGUSISpin(void); /* Install our private GUSI spin routine */
|
||||
#endif
|
||||
|
||||
char *PyMac_StrError(int); /* strerror with mac errors */
|
||||
|
@ -62,7 +63,6 @@ unsigned char *Pstring(char *str); /* Convert c-string to pascal-string in stat
|
|||
|
||||
#ifdef USE_GUSI
|
||||
extern int PyMac_ConsoleIsDead; /* True when exiting */
|
||||
extern void PyMac_SetGUSISpin(void); /* Install our private GUSI spin routine */
|
||||
extern void PyMac_StopGUSISpin(void); /* Stop eventprocessing during exit() */
|
||||
#endif
|
||||
|
||||
|
@ -81,6 +81,7 @@ void PyMac_GetSchedParams Py_PROTO((PyMacSchedParams *)); /* Get schedulers para
|
|||
void PyMac_SetSchedParams Py_PROTO((PyMacSchedParams *)); /* Set schedulers params */
|
||||
PyObject *PyErr_Mac(PyObject *, int); /* Exception with a mac error */
|
||||
PyObject *PyMac_Error(OSErr); /* Uses PyMac_GetOSErrException */
|
||||
int PyMac_DoYield Py_PROTO((int, int)); /* Yield cpu. First arg is maxtime, second ok to call python */
|
||||
int PyMac_HandleEvent Py_PROTO((EventRecord *)); /* Handle one event, possibly in Python */
|
||||
void PyMac_HandleEventIntern Py_PROTO((EventRecord *)); /* Handle one event internal only */
|
||||
int PyMac_SetEventHandler Py_PROTO((PyObject *)); /* set python-coded event handler */
|
||||
|
|
|
@ -38,7 +38,11 @@ PERFORMANCE OF THIS SOFTWARE.
|
|||
#ifdef USE_GUSI
|
||||
#include <sys/types.h>
|
||||
#endif /* USE_GUSI */
|
||||
#ifdef USE_GUSI2
|
||||
#include <sys/stat.h>
|
||||
#else
|
||||
#include <stat.h>
|
||||
#endif
|
||||
#include "rename2.h"
|
||||
|
||||
long
|
||||
|
|
|
@ -0,0 +1,101 @@
|
|||
/*
|
||||
* Generated with the GUSIConfig application and then hand-modified by jack.
|
||||
*/
|
||||
|
||||
#define GUSI_SOURCE
|
||||
#include <GUSIConfig.h>
|
||||
#include <sys/cdefs.h>
|
||||
|
||||
#include "Python.h"
|
||||
#include "macglue.h"
|
||||
|
||||
static void
|
||||
PyMac_GUSISpin(bool wait)
|
||||
{
|
||||
static Boolean inForeground = true;
|
||||
int maxsleep = 6; /* 6 ticks is "normal" sleeptime */
|
||||
|
||||
if (PyMac_ConsoleIsDead) return;
|
||||
|
||||
if ( !wait )
|
||||
maxsleep = 0;
|
||||
|
||||
PyMac_DoYield(maxsleep, 0); /* XXXX or is it safe to call python here? */
|
||||
}
|
||||
|
||||
|
||||
/* Declarations of Socket Factories */
|
||||
|
||||
__BEGIN_DECLS
|
||||
void GUSIwithInetSockets();
|
||||
void GUSIwithLocalSockets();
|
||||
void GUSIwithMTInetSockets();
|
||||
void GUSIwithMTTcpSockets();
|
||||
void GUSIwithMTUdpSockets();
|
||||
void GUSIwithOTInetSockets();
|
||||
void GUSIwithOTTcpSockets();
|
||||
void GUSIwithOTUdpSockets();
|
||||
void GUSIwithPPCSockets();
|
||||
void GUSISetupFactories();
|
||||
__END_DECLS
|
||||
|
||||
/* Configure Socket Factories */
|
||||
|
||||
void GUSISetupFactories()
|
||||
{
|
||||
#ifdef GUSISetupFactories_BeginHook
|
||||
GUSISetupFactories_BeginHook
|
||||
#endif
|
||||
GUSIwithInetSockets();
|
||||
#ifdef GUSISetupFactories_EndHook
|
||||
GUSISetupFactories_EndHook
|
||||
#endif
|
||||
}
|
||||
|
||||
/* Declarations of File Devices */
|
||||
|
||||
__BEGIN_DECLS
|
||||
void GUSIwithDConSockets();
|
||||
void GUSIwithNullSockets();
|
||||
void GUSISetupDevices();
|
||||
__END_DECLS
|
||||
|
||||
/* Configure File Devices */
|
||||
|
||||
void GUSISetupDevices()
|
||||
{
|
||||
#ifdef GUSISetupDevices_BeginHook
|
||||
GUSISetupDevices_BeginHook
|
||||
#endif
|
||||
#ifdef GUSISetupDevices_EndHook
|
||||
GUSISetupDevices_EndHook
|
||||
#endif
|
||||
}
|
||||
|
||||
#ifndef __cplusplus
|
||||
#error GUSISetupConfig() needs to be written in C++
|
||||
#endif
|
||||
|
||||
GUSIConfiguration::FileSuffix sSuffices[] = {
|
||||
"", '????', '????'
|
||||
};
|
||||
|
||||
extern "C" void GUSISetupConfig()
|
||||
{
|
||||
GUSIConfiguration * config =
|
||||
GUSIConfiguration::CreateInstance(GUSIConfiguration::kNoResource);
|
||||
|
||||
config->ConfigureDefaultTypeCreator('TEXT', 'TEXT');
|
||||
config->ConfigureSuffices(
|
||||
sizeof(sSuffices)/sizeof(GUSIConfiguration::FileSuffix)-1, sSuffices);
|
||||
config->ConfigureAutoInitGraf(false);
|
||||
config->ConfigureAutoSpin(false);
|
||||
config->ConfigureHandleAppleEvents(false);
|
||||
config->ConfigureSigInt(false);
|
||||
config->ConfigureSigPipe(true);
|
||||
|
||||
GUSISetHook(GUSI_SpinHook, (GUSIHook)PyMac_GUSISpin);
|
||||
|
||||
}
|
||||
|
||||
/**************** END GUSI CONFIGURATION *************************/
|
|
@ -38,23 +38,35 @@ PERFORMANCE OF THIS SOFTWARE.
|
|||
#endif
|
||||
|
||||
#ifdef __MWERKS__
|
||||
#ifdef USE_GUSI
|
||||
#define HASGUSI " w/GUSI"
|
||||
#ifdef USE_GUSI1
|
||||
#define HASGUSI " w/GUSI1"
|
||||
#else
|
||||
#ifdef USE_GUSI2
|
||||
#define HASGUSI " w/GUSI2"
|
||||
#else
|
||||
#define HASGUSI ""
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#ifdef USE_MSL
|
||||
#define HASMSL " w/MSL"
|
||||
#else
|
||||
#define HASMSL ""
|
||||
#endif
|
||||
|
||||
#ifdef WITH_THREAD
|
||||
#define HASTHREAD " w/THREADS"
|
||||
#else
|
||||
#define HASTHREAD ""
|
||||
#endif
|
||||
|
||||
#ifdef __powerc
|
||||
#define COMPILER " [CW PPC" HASGUSI HASMSL "]"
|
||||
#define COMPILER " [CW PPC" HASGUSI HASMSL HASTHREAD"]"
|
||||
#else
|
||||
#ifdef __CFM68K__
|
||||
#define COMPILER " [CW CFM68K" HASGUSI HASMSL "]"
|
||||
#define COMPILER " [CW CFM68K" HASGUSI HASMSL HASTHREAD"]"
|
||||
#else
|
||||
#define COMPILER " [CW 68K" HASGUSI HASMSL "]"
|
||||
#define COMPILER " [CW 68K" HASGUSI HASMSL HASTHREAD"]"
|
||||
#endif
|
||||
#endif
|
||||
#endif
|
||||
|
|
|
@ -54,7 +54,7 @@ PERFORMANCE OF THIS SOFTWARE.
|
|||
#include <TextUtils.h>
|
||||
#include <Dialogs.h>
|
||||
|
||||
#ifdef USE_GUSI
|
||||
#ifdef USE_GUSI1
|
||||
#include <GUSI.h>
|
||||
#endif
|
||||
|
||||
|
@ -444,7 +444,7 @@ PyMac_PreferenceOptions(PyMac_PrefRecord *pr)
|
|||
UseResFile(oldrh);
|
||||
}
|
||||
|
||||
#ifdef USE_GUSI
|
||||
#ifdef USE_GUSI1
|
||||
void
|
||||
PyMac_SetGUSIOptions()
|
||||
{
|
||||
|
|
|
@ -62,11 +62,11 @@ OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
|||
#ifdef __MWERKS__
|
||||
#include <SIOUX.h>
|
||||
#endif
|
||||
#ifdef USE_GUSI
|
||||
#ifdef USE_GUSI1
|
||||
#include <TFileSpec.h> /* For Path2FSSpec */
|
||||
#include <LowMem.h> /* For SetSFCurDir, etc */
|
||||
#include <GUSI.h>
|
||||
#endif
|
||||
#include <LowMem.h>
|
||||
|
||||
/* The ID of the Sioux apple menu */
|
||||
#define SIOUX_APPLEID 32000
|
||||
|
@ -108,7 +108,6 @@ extern PyObject *newmfssobject Py_PROTO((FSSpec *));
|
|||
static int interrupted; /* Set to true when cmd-. seen */
|
||||
static RETSIGTYPE intcatcher Py_PROTO((int));
|
||||
|
||||
static int PyMac_DoYield Py_PROTO((int, int));
|
||||
static int PyMac_Yield Py_PROTO((void));
|
||||
|
||||
/*
|
||||
|
@ -161,7 +160,7 @@ static PyObject *python_event_handler;
|
|||
*/
|
||||
int PyMac_AppearanceCompliant;
|
||||
|
||||
#ifdef USE_GUSI
|
||||
#ifdef USE_GUSI1
|
||||
/*
|
||||
** GUSI (1.6.0 and earlier, at the least) do not set the MacOS idea of
|
||||
** the working directory. Hence, we call this routine after each call
|
||||
|
@ -183,7 +182,9 @@ PyMac_FixGUSIcd()
|
|||
if (PBHSetVolSync(&pb) != noErr)
|
||||
return;
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifdef USE_GUSI
|
||||
/*
|
||||
** SpinCursor (needed by GUSI) drags in heaps of stuff, so we
|
||||
** provide a dummy here.
|
||||
|
@ -194,6 +195,7 @@ void RotateCursor(short x) { /* Dummy */ }
|
|||
/*
|
||||
** Replacement GUSI Spin function
|
||||
*/
|
||||
#ifdef USE_GUSI1
|
||||
static int
|
||||
PyMac_GUSISpin(spin_msg msg, long arg)
|
||||
{
|
||||
|
@ -222,6 +224,7 @@ void
|
|||
PyMac_SetGUSISpin() {
|
||||
GUSISetHook(GUSI_SpinHook, (GUSIHook)PyMac_GUSISpin);
|
||||
}
|
||||
#endif
|
||||
|
||||
/* Called at exit() time thru atexit(), to stop event processing */
|
||||
void
|
||||
|
@ -531,7 +534,7 @@ PyMac_HandleEvent(evp)
|
|||
/*
|
||||
** Yield the CPU to other tasks without processing events.
|
||||
*/
|
||||
static int
|
||||
int
|
||||
PyMac_DoYield(int maxsleep, int maycallpython)
|
||||
{
|
||||
EventRecord ev;
|
||||
|
@ -563,7 +566,7 @@ PyMac_DoYield(int maxsleep, int maycallpython)
|
|||
}
|
||||
} else {
|
||||
latest_time_ready = LMGetTicks() + maxsleep;
|
||||
while ( maxsleep >= 0 ) {
|
||||
do {
|
||||
/* XXXX Hack by Jack.
|
||||
** In time.sleep() you can click to another application
|
||||
** once only. If you come back to Python you cannot get away
|
||||
|
@ -578,7 +581,7 @@ PyMac_DoYield(int maxsleep, int maycallpython)
|
|||
return -1;
|
||||
}
|
||||
maxsleep = latest_time_ready - LMGetTicks();
|
||||
}
|
||||
} while ( maxsleep > 0 );
|
||||
}
|
||||
in_here--;
|
||||
return 0;
|
||||
|
|
|
@ -48,7 +48,7 @@ OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
|||
#endif
|
||||
#include <CodeFragments.h>
|
||||
|
||||
#ifdef USE_GUSI
|
||||
#ifdef USE_GUSI1
|
||||
#include "TFileSpec.h" /* for Path2FSSpec() */
|
||||
#endif
|
||||
|
||||
|
@ -104,7 +104,7 @@ findnamedresource(
|
|||
UseResFile(PyMac_AppRefNum);
|
||||
filerh = -1;
|
||||
} else {
|
||||
#ifdef USE_GUSI
|
||||
#ifdef USE_GUSI1
|
||||
if ( Path2FSSpec(filename, &fss) != noErr ||
|
||||
#else
|
||||
if ( FSMakeFSSpec(0, 0, Pstring(filename), &fss) != noErr ||
|
||||
|
@ -303,7 +303,7 @@ char *filename;
|
|||
UseResFile(PyMac_AppRefNum);
|
||||
filerh = -1;
|
||||
} else {
|
||||
#ifdef USE_GUSI
|
||||
#ifdef USE_GUSI1
|
||||
if ( (err=Path2FSSpec(filename, &fss)) != noErr ||
|
||||
FSpGetFInfo(&fss, &finfo) != noErr )
|
||||
#else
|
||||
|
@ -432,7 +432,7 @@ PyMac_FindModuleExtension(char *buf, int *lenp, char *module)
|
|||
#else
|
||||
strcpy(buf+*lenp, _PyImport_Filetab[0].suffix);
|
||||
#endif
|
||||
#ifdef USE_GUSI
|
||||
#ifdef USE_GUSI1
|
||||
if ( Path2FSSpec(buf, &fss) == noErr &&
|
||||
FSpGetFInfo(&fss, &finfo) == noErr)
|
||||
return _PyImport_Filetab;
|
||||
|
|
|
@ -225,13 +225,15 @@ init_common(int *argcp, char ***argvp, int embedded)
|
|||
PyMac_AddLibResources();
|
||||
#endif
|
||||
|
||||
#if defined(USE_GUSI)
|
||||
#if defined(USE_GUSI1)
|
||||
/* Setup GUSI */
|
||||
GUSIDefaultSetup();
|
||||
PyMac_SetGUSISpin();
|
||||
PyMac_SetGUSIOptions();
|
||||
atexit(PyMac_StopGUSISpin);
|
||||
#endif
|
||||
#if defined(USE_GUSI)
|
||||
atexit(PyMac_StopGUSISpin);
|
||||
#endif
|
||||
|
||||
#ifdef USE_SIOUX
|
||||
/* Set various SIOUX flags. Some are changed later based on options */
|
||||
|
@ -405,7 +407,7 @@ PyMac_InitApplication()
|
|||
*endp = '\0';
|
||||
|
||||
chdir(curwd);
|
||||
#ifdef USE_GUSI
|
||||
#ifdef USE_GUSI1
|
||||
/* Change MacOS's idea of wd too */
|
||||
PyMac_FixGUSIcd();
|
||||
#endif
|
||||
|
|
|
@ -29,6 +29,7 @@ PERFORMANCE OF THIS SOFTWARE.
|
|||
|
||||
******************************************************************/
|
||||
|
||||
#ifndef USE_GUSI2
|
||||
#define ENOTDIR (-120)
|
||||
#ifndef __MSL__
|
||||
#define EACCES (-54)
|
||||
|
@ -40,6 +41,7 @@ PERFORMANCE OF THIS SOFTWARE.
|
|||
#define ENFILE (-42)
|
||||
#define EIO (-36)
|
||||
#define ENOSPC (-34)
|
||||
#endif
|
||||
|
||||
#define ESRCH 3
|
||||
#define EINTR 4
|
||||
|
|
|
@ -5,7 +5,8 @@
|
|||
** specific features, you may also need different sets of sources.
|
||||
*/
|
||||
|
||||
#define USE_GUSI /* Stdio implemented with GUSI */
|
||||
#define USE_GUSI1 /* Stdio implemented with GUSI */
|
||||
/* #define USE_GUSI2 /* Stdio implemented with GUSI 2 */
|
||||
#define USE_MSL /* Use Mw Standard Library (as opposed to Plaugher C libraries) */
|
||||
#define USE_TOOLBOX /* Include toolbox modules in core Python */
|
||||
#define USE_QT /* Include quicktime modules in core Python */
|
||||
|
|
|
@ -2,7 +2,8 @@
|
|||
** Config file for dynamically-loaded ppc/cfm68k plugin modules.
|
||||
*/
|
||||
|
||||
#define USE_GUSI /* Stdio implemented with GUSI */
|
||||
#define USE_GUSI1 /* Stdio implemented with GUSI */
|
||||
/* #define USE_GUSI2 /* Stdio implemented with GUSI */
|
||||
#define USE_MSL /* Use MSL libraries */
|
||||
#ifdef USE_MSL
|
||||
#define MSL_USE_PRECOMPILED_HEADERS 0 /* Don't use precomp headers: we include our own */
|
||||
|
|
|
@ -6,7 +6,8 @@
|
|||
** specific features, you may also need different sets of sources.
|
||||
*/
|
||||
|
||||
#define USE_GUSI /* Stdio implemented with GUSI */
|
||||
/* #define USE_GUSI1 /* Stdio implemented with GUSI */
|
||||
#define USE_GUSI2 /* Stdio implemented with GUSI */
|
||||
#define USE_MSL /* Use Mw Standard Library (as opposed to Plaugher C libraries) */
|
||||
#define USE_CORE_TOOLBOX /* Include core toolbox modules (Dlg,Ctl,Menu,Win,Res,Qd) */
|
||||
/* #define USE_TOOLBOX /* Include all toolbox modules in core Python */
|
||||
|
|
|
@ -5,7 +5,8 @@
|
|||
** specific features, you may also need different sets of sources.
|
||||
*/
|
||||
|
||||
#define USE_GUSI /* Stdio implemented with GUSI */
|
||||
#define USE_GUSI2 /* Stdio implemented with GUSI 2 */
|
||||
/* # define USE_GUSI1 /* Stdio implemented with GUSI 1 */
|
||||
#define USE_MSL /* Use Mw Standard Library (as opposed to Plaugher C libraries) */
|
||||
#define USE_TOOLBOX /* Include toolbox modules in core Python */
|
||||
#define USE_QT /* Include quicktime modules in core Python */
|
||||
|
@ -20,7 +21,7 @@
|
|||
/* #define USE_MAC_SHARED_LIBRARY /* Enable code to add shared-library resources */
|
||||
/* #define USE_MAC_APPLET_SUPPORT /* Enable code to run a PYC resource */
|
||||
/* #define HAVE_DYNAMIC_LOADING /* Enable dynamically loaded modules */
|
||||
#define USE_MALLOC_DEBUG /* Enable range checking and other malloc debugging */
|
||||
/* #define USE_MALLOC_DEBUG /* Enable range checking and other malloc debugging */
|
||||
/* #define USE_GDBM /* Include the gdbm module */
|
||||
/* #define USE_ZLIB /* Include the zlib module */
|
||||
#define USE_APPEARANCE /* Enable Appearance support */
|
||||
|
|
|
@ -0,0 +1,35 @@
|
|||
/*
|
||||
** Configuration file for small standalone 68k/ppc Python.
|
||||
**
|
||||
** Note: enabling the switches below is not enough to enable the
|
||||
** specific features, you may also need different sets of sources.
|
||||
*/
|
||||
|
||||
#define USE_GUSI2 /* Stdio implemented with GUSI 2 */
|
||||
/* # define USE_GUSI1 /* Stdio implemented with GUSI 1 */
|
||||
#define WITH_THREAD /* Use thread support (needs GUSI 2, not GUSI 1) */
|
||||
#define USE_MSL /* Use Mw Standard Library (as opposed to Plaugher C libraries) */
|
||||
#define USE_TOOLBOX /* Include toolbox modules in core Python */
|
||||
#define USE_QT /* Include quicktime modules in core Python */
|
||||
/* #define USE_WASTE /* Include waste module in core Python */
|
||||
#define USE_MACSPEECH /* Include macspeech module in core Python */
|
||||
/* #define USE_IMG /* Include img modules in core Python */
|
||||
#define USE_MACCTB /* Include ctb module in core Python */
|
||||
/* #define USE_STDWIN /* Include stdwin module in core Python */
|
||||
/* #define USE_MACTCP /* Include mactcp (*not* socket) modules in core */
|
||||
/* #define USE_TK /* Include _tkinter module in core Python */
|
||||
/* #define MAC_TCL /* This *must* be on if USE_TK is on */
|
||||
/* #define USE_MAC_SHARED_LIBRARY /* Enable code to add shared-library resources */
|
||||
/* #define USE_MAC_APPLET_SUPPORT /* Enable code to run a PYC resource */
|
||||
/* #define HAVE_DYNAMIC_LOADING /* Enable dynamically loaded modules */
|
||||
#define USE_MALLOC_DEBUG /* Enable range checking and other malloc debugging */
|
||||
/* #define USE_GDBM /* Include the gdbm module */
|
||||
/* #define USE_ZLIB /* Include the zlib module */
|
||||
#define USE_APPEARANCE /* Enable Appearance support */
|
||||
#ifdef __powerc
|
||||
#define USE_CACHE_ALIGNED 8 /* Align on 32-byte boundaries for 604 */
|
||||
#endif
|
||||
#ifdef USE_MSL
|
||||
#define MSL_USE_PRECOMPILED_HEADERS 0 /* Don't use precomp headers: we include our own */
|
||||
#include <ansi_prefix.mac.h>
|
||||
#endif
|
|
@ -2,6 +2,7 @@
|
|||
** Special config-file for _tkinter plugin.
|
||||
*/
|
||||
|
||||
#define USE_GUSI /* Stdio implemented with GUSI */
|
||||
#define USE_GUSI1 /* Stdio implemented with GUSI */
|
||||
/* #define USE_GUSI2 /* Stdio implemented with GUSI */
|
||||
#define USE_TK /* Include _tkinter module in core Python */
|
||||
#define MAC_TCL /* This *must* be on if USE_TK is on */
|
||||
|
|
Binary file not shown.
Loading…
Reference in New Issue