mirror of https://github.com/python/cpython
Fix for issue #3638: Remove module level functions in _tkinter that
depend on TkappObject
This commit is contained in:
parent
92ad63f748
commit
3f5f8228c0
|
@ -82,6 +82,9 @@ Core and Builtins
|
|||
Library
|
||||
-------
|
||||
|
||||
- Issue #3638: Remove functions from _tkinter module level that depend on
|
||||
TkappObject to work with multiple threads.
|
||||
|
||||
- Issue #4718: Adapt the wsgiref package so that it actually works with
|
||||
Python 3.x, in accordance with the `official amendments of the spec
|
||||
<http://www.wsgi.org/wsgi/Amendments_1.0>`_.
|
||||
|
|
|
@ -2171,19 +2171,7 @@ Tkapp_CreateFileHandler(PyObject *self, PyObject *args)
|
|||
&file, &mask, &func))
|
||||
return NULL;
|
||||
|
||||
#ifdef WITH_THREAD
|
||||
if (!self && !tcl_lock) {
|
||||
/* We don't have the Tcl lock since Tcl is threaded. */
|
||||
PyErr_SetString(PyExc_RuntimeError,
|
||||
"_tkinter.createfilehandler not supported "
|
||||
"for threaded Tcl");
|
||||
return NULL;
|
||||
}
|
||||
#endif
|
||||
|
||||
if (self) {
|
||||
CHECK_TCL_APPARTMENT;
|
||||
}
|
||||
CHECK_TCL_APPARTMENT;
|
||||
|
||||
tfile = PyObject_AsFileDescriptor(file);
|
||||
if (tfile < 0)
|
||||
|
@ -2214,19 +2202,7 @@ Tkapp_DeleteFileHandler(PyObject *self, PyObject *args)
|
|||
if (!PyArg_ParseTuple(args, "O:deletefilehandler", &file))
|
||||
return NULL;
|
||||
|
||||
#ifdef WITH_THREAD
|
||||
if (!self && !tcl_lock) {
|
||||
/* We don't have the Tcl lock since Tcl is threaded. */
|
||||
PyErr_SetString(PyExc_RuntimeError,
|
||||
"_tkinter.deletefilehandler not supported "
|
||||
"for threaded Tcl");
|
||||
return NULL;
|
||||
}
|
||||
#endif
|
||||
|
||||
if (self) {
|
||||
CHECK_TCL_APPARTMENT;
|
||||
}
|
||||
CHECK_TCL_APPARTMENT;
|
||||
|
||||
tfile = PyObject_AsFileDescriptor(file);
|
||||
if (tfile < 0)
|
||||
|
@ -2400,19 +2376,7 @@ Tkapp_CreateTimerHandler(PyObject *self, PyObject *args)
|
|||
return NULL;
|
||||
}
|
||||
|
||||
#ifdef WITH_THREAD
|
||||
if (!self && !tcl_lock) {
|
||||
/* We don't have the Tcl lock since Tcl is threaded. */
|
||||
PyErr_SetString(PyExc_RuntimeError,
|
||||
"_tkinter.createtimerhandler not supported "
|
||||
"for threaded Tcl");
|
||||
return NULL;
|
||||
}
|
||||
#endif
|
||||
|
||||
if (self) {
|
||||
CHECK_TCL_APPARTMENT;
|
||||
}
|
||||
CHECK_TCL_APPARTMENT;
|
||||
|
||||
v = Tktt_New(func);
|
||||
if (v) {
|
||||
|
@ -2438,20 +2402,8 @@ Tkapp_MainLoop(PyObject *selfptr, PyObject *args)
|
|||
if (!PyArg_ParseTuple(args, "|i:mainloop", &threshold))
|
||||
return NULL;
|
||||
|
||||
#ifdef WITH_THREAD
|
||||
if (!self && !tcl_lock) {
|
||||
/* We don't have the Tcl lock since Tcl is threaded. */
|
||||
PyErr_SetString(PyExc_RuntimeError,
|
||||
"_tkinter.mainloop not supported "
|
||||
"for threaded Tcl");
|
||||
return NULL;
|
||||
}
|
||||
#endif
|
||||
|
||||
if (self) {
|
||||
CHECK_TCL_APPARTMENT;
|
||||
self->dispatching = 1;
|
||||
}
|
||||
CHECK_TCL_APPARTMENT;
|
||||
self->dispatching = 1;
|
||||
|
||||
quitMainLoop = 0;
|
||||
while (Tk_GetNumMainWindows() > threshold &&
|
||||
|
@ -2461,7 +2413,7 @@ Tkapp_MainLoop(PyObject *selfptr, PyObject *args)
|
|||
int result;
|
||||
|
||||
#ifdef WITH_THREAD
|
||||
if (self && self->threaded) {
|
||||
if (self->threaded) {
|
||||
/* Allow other Python threads to run. */
|
||||
ENTER_TCL
|
||||
result = Tcl_DoOneEvent(0);
|
||||
|
@ -2483,15 +2435,13 @@ Tkapp_MainLoop(PyObject *selfptr, PyObject *args)
|
|||
#endif
|
||||
|
||||
if (PyErr_CheckSignals() != 0) {
|
||||
if (self)
|
||||
self->dispatching = 0;
|
||||
self->dispatching = 0;
|
||||
return NULL;
|
||||
}
|
||||
if (result < 0)
|
||||
break;
|
||||
}
|
||||
if (self)
|
||||
self->dispatching = 0;
|
||||
self->dispatching = 0;
|
||||
quitMainLoop = 0;
|
||||
|
||||
if (errorInCmd) {
|
||||
|
@ -2884,14 +2834,6 @@ static PyMethodDef moduleMethods[] =
|
|||
{
|
||||
{"_flatten", Tkinter_Flatten, METH_VARARGS},
|
||||
{"create", Tkinter_Create, METH_VARARGS},
|
||||
#ifdef HAVE_CREATEFILEHANDLER
|
||||
{"createfilehandler", Tkapp_CreateFileHandler, METH_VARARGS},
|
||||
{"deletefilehandler", Tkapp_DeleteFileHandler, METH_VARARGS},
|
||||
#endif
|
||||
{"createtimerhandler", Tkapp_CreateTimerHandler, METH_VARARGS},
|
||||
{"mainloop", Tkapp_MainLoop, METH_VARARGS},
|
||||
{"dooneevent", Tkapp_DoOneEvent, METH_VARARGS},
|
||||
{"quit", Tkapp_Quit, METH_VARARGS},
|
||||
{"setbusywaitinterval",Tkinter_setbusywaitinterval, METH_VARARGS,
|
||||
setbusywaitinterval_doc},
|
||||
{"getbusywaitinterval",(PyCFunction)Tkinter_getbusywaitinterval,
|
||||
|
|
Loading…
Reference in New Issue