[Python-checkins] r68237 - in python/branches/py3k: Misc/NEWS Modules/_tkinter.c

guilherme.polo python-checkins at python.org
Sat Jan 3 23:00:40 CET 2009


Author: guilherme.polo
Date: Sat Jan  3 23:00:39 2009
New Revision: 68237

Log:
Fix for issue #3638: Remove module level functions in _tkinter that 
depend on TkappObject


Modified:
   python/branches/py3k/Misc/NEWS
   python/branches/py3k/Modules/_tkinter.c

Modified: python/branches/py3k/Misc/NEWS
==============================================================================
--- python/branches/py3k/Misc/NEWS	(original)
+++ python/branches/py3k/Misc/NEWS	Sat Jan  3 23:00:39 2009
@@ -82,6 +82,9 @@
 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>`_.

Modified: python/branches/py3k/Modules/_tkinter.c
==============================================================================
--- python/branches/py3k/Modules/_tkinter.c	(original)
+++ python/branches/py3k/Modules/_tkinter.c	Sat Jan  3 23:00:39 2009
@@ -2171,19 +2171,7 @@
 			      &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 @@
 	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 @@
 		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 @@
 	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 @@
 		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 @@
 #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 @@
 {
 	{"_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,


More information about the Python-checkins mailing list