* tkintermodule.c (Tkapp_New): Remove #ifdef WITH_APPINIT.

* tkintermodule.c (FileHandler): Make arg a tuple; bug found
	by <tnb2d@cs.virginia.edu>.  Call the Python file handler
	function with (file, mask) argument.  Fix a few of my refcnt bugs.
This commit is contained in:
Guido van Rossum 1994-06-27 07:59:42 +00:00
parent 535cf0cbe2
commit 7687522309
1 changed files with 13 additions and 13 deletions

View File

@ -254,13 +254,11 @@ Tkapp_New (screenName, baseName, className, interactive)
else
Tcl_SetVar (v->interp, "tcl_interactive", "0", TCL_GLOBAL_ONLY);
#ifndef WITH_APPINIT
if (Tcl_AppInit (v->interp) != TCL_OK)
{
PyErr_SetString (Tkinter_TclError, "Tcl_AppInit failed"); /* XXX */
return NULL;
}
#endif /* !WITH_APPINIT */
return v;
}
@ -768,15 +766,15 @@ Tkapp_DeleteCommand (self, args)
void
FileHandler (clientData, mask)
ClientData clientData; /* Is: func */
ClientData clientData; /* Is: (func, file) */
int mask;
{
PyObject *func;
PyObject *arg, *res;
PyObject *func, *file, *arg, *res;
func = (PyObject *) clientData;
func = PyTuple_GetItem ((PyObject *) clientData, 0);
file = PyTuple_GetItem ((PyObject *) clientData, 1);
arg = PyInt_FromLong ((long) mask);
arg = Py_BuildValue ("(Oi)", file, (long) mask);
res = PyEval_CallObject (func, arg);
Py_DECREF (arg);
if (res == NULL)
@ -784,6 +782,7 @@ FileHandler (clientData, mask)
errorInCmd = 1;
PyErr_GetAndClear (&excInCmd, &valInCmd);
}
Py_DECREF (res);
}
static PyObject *
@ -791,10 +790,8 @@ Tkapp_CreateFileHandler (self, args)
PyObject *self;
PyObject *args; /* Is (file, mask, func) */
{
PyObject *file;
int mask;
PyObject *func;
int id;
PyObject *file, *func, *data;
int mask, id;
if (!PyArg_Parse (args, "(OiO)", &file, &mask, &func))
return NULL;
@ -805,10 +802,13 @@ Tkapp_CreateFileHandler (self, args)
return NULL;
}
/* ClientData is: (func, file) */
data = Py_BuildValue ("(OO)", func, file);
id = fileno (PyFile_AsFile (file));
Py_DECREF (file);
Tk_CreateFileHandler (id, mask, FileHandler, (ClientData) func);
Tk_CreateFileHandler (id, mask, FileHandler, (ClientData) data);
/* XXX fileHandlerDict */
Py_INCREF (Py_None);
return Py_None;
}