]> granicus.if.org Git - python/commitdiff
Fix for issue #3638: Remove module level functions in _tkinter that
authorGuilherme Polo <ggpolo@gmail.com>
Sat, 3 Jan 2009 22:00:39 +0000 (22:00 +0000)
committerGuilherme Polo <ggpolo@gmail.com>
Sat, 3 Jan 2009 22:00:39 +0000 (22:00 +0000)
depend on TkappObject

Misc/NEWS
Modules/_tkinter.c

index 9db89a8c9ce31378dc91f5b067792ab8da18d566..e0b9eec1cd2e379878697f71da22207747d19ea5 100644 (file)
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -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>`_.
index dfafed5cda387ad5c40bb56cc8ade3ddba5b90e6..50950600e2cbd22ed39cebe7b9c845a65a202acb 100644 (file)
@@ -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,