]> granicus.if.org Git - python/commitdiff
Adjusted _tkinter to compile without warnings when WITH_THREAD is not
authorGuilherme Polo <ggpolo@gmail.com>
Fri, 27 Mar 2009 21:43:08 +0000 (21:43 +0000)
committerGuilherme Polo <ggpolo@gmail.com>
Fri, 27 Mar 2009 21:43:08 +0000 (21:43 +0000)
defined (part of issue #5035)

Misc/NEWS
Modules/_tkinter.c

index a50f29d22baeca88378f9fb32ee5e8dbe090dfff..c395d06fc6253d829b16a53e2233bd44a55f79d3 100644 (file)
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -197,6 +197,9 @@ Core and Builtins
 Library
 -------
 
+- Adjusted _tkinter to compile without warnings when WITH_THREAD is not
+  defined (part of issue #5035).
+
 - Issue #5561: Removed the sys.version_info shortcuts from platform's
   python_version() and python_version_tuple() since they produced different
   output compared to previous Python versions.
index 4056bcd412e4d66516f13f607d1fbcbca5ac813f..b4031db793eb4476bdeb4bd66b2971c959b116f8 100644 (file)
@@ -734,6 +734,7 @@ Tkapp_New(char *screenName, char *baseName, char *className,
 }
 
 
+#ifdef WITH_THREAD
 static void
 Tkapp_ThreadSend(TkappObject *self, Tcl_Event *ev,
                 Tcl_Condition *cond, Tcl_Mutex *mutex)
@@ -746,6 +747,7 @@ Tkapp_ThreadSend(TkappObject *self, Tcl_Event *ev,
        Tcl_MutexUnlock(mutex);
        Py_END_ALLOW_THREADS
 }
+#endif
 
 \f
 /** Tcl Eval **/
@@ -1135,8 +1137,8 @@ FromObj(PyObject* tkapp, Tcl_Obj *value)
        return newPyTclObject(value);
 }
 
+#ifdef WITH_THREAD
 /* This mutex synchronizes inter-thread command calls. */
-
 TCL_DECLARE_MUTEX(call_mutex)
 
 typedef struct Tkapp_CallEvent {
@@ -1148,6 +1150,7 @@ typedef struct Tkapp_CallEvent {
        PyObject **exc_type, **exc_value, **exc_tb;
        Tcl_Condition *done;
 } Tkapp_CallEvent;
+#endif
 
 void
 Tkapp_CallDeallocArgs(Tcl_Obj** objv, Tcl_Obj** objStore, int objc)
@@ -1258,6 +1261,8 @@ Tkapp_CallResult(TkappObject *self)
        return res;
 }
 
+#ifdef WITH_THREAD
+
 /* Tkapp_CallProc is the event procedure that is executed in the context of
    the Tcl interpreter thread. Initially, it holds the Tcl lock, and doesn't
    hold the Python lock. */
@@ -1302,6 +1307,8 @@ done:
        return 1;
 }
 
+#endif
+
 /* This is the main entry point for calling a Tcl command.
    It supports three cases, with regard to threading:
    1. Tcl is not threaded: Must have the Tcl lock, then can invoke command in
@@ -1531,9 +1538,11 @@ Tkapp_AddErrorInfo(PyObject *self, PyObject *args)
 \f
 /** Tcl Variable **/
 
+typedef PyObject* (*EventFunc)(PyObject*, PyObject *args, int flags);
+
+#ifdef WITH_THREAD
 TCL_DECLARE_MUTEX(var_mutex)
 
-typedef PyObject* (*EventFunc)(PyObject*, PyObject *args, int flags);
 typedef struct VarEvent {
        Tcl_Event ev; /* must be first */
        PyObject *self;
@@ -1545,6 +1554,7 @@ typedef struct VarEvent {
        PyObject **exc_val;
        Tcl_Condition *cond;
 } VarEvent;
+#endif
 
 static int
 varname_converter(PyObject *in, void *_out)
@@ -1562,6 +1572,8 @@ varname_converter(PyObject *in, void *_out)
        return 0;
 }      
 
+#ifdef WITH_THREAD
+
 static void
 var_perform(VarEvent *ev)
 {
@@ -1589,11 +1601,13 @@ var_proc(VarEvent* ev, int flags)
        return 1;
 }
 
+#endif
+
 static PyObject*
 var_invoke(EventFunc func, PyObject *selfptr, PyObject *args, int flags)
 {
-       TkappObject *self = (TkappObject*)selfptr;
 #ifdef WITH_THREAD
+       TkappObject *self = (TkappObject*)selfptr;
        if (self->threaded && self->thread_id != Tcl_GetCurrentThread()) {
                TkappObject *self = (TkappObject*)selfptr;
                VarEvent *ev;
@@ -2096,6 +2110,7 @@ PythonCmdDelete(ClientData clientData)
 
 \f
 
+#ifdef WITH_THREAD
 TCL_DECLARE_MUTEX(command_mutex)
 
 typedef struct CommandEvent{
@@ -2122,6 +2137,7 @@ Tkapp_CommandProc(CommandEvent *ev, int flags)
        Tcl_MutexUnlock(&command_mutex);
        return 1;
 }
+#endif
 
 static PyObject *
 Tkapp_CreateCommand(PyObject *selfptr, PyObject *args)
@@ -2152,7 +2168,8 @@ Tkapp_CreateCommand(PyObject *selfptr, PyObject *args)
        Py_INCREF(func);
        data->self = selfptr;
        data->func = func;
-       
+
+#ifdef WITH_THREAD
        if (self->threaded && self->thread_id != Tcl_GetCurrentThread()) {
                Tcl_Condition cond = NULL;
                CommandEvent *ev = (CommandEvent*)ckalloc(sizeof(CommandEvent));
@@ -2166,7 +2183,9 @@ Tkapp_CreateCommand(PyObject *selfptr, PyObject *args)
                Tkapp_ThreadSend(self, (Tcl_Event*)ev, &cond, &command_mutex);
                Tcl_ConditionFinalize(&cond);
        }
-       else {
+       else
+#endif
+       {
                ENTER_TCL
                err = Tcl_CreateCommand(
                        Tkapp_Interp(self), cmdName, PythonCmd,
@@ -2194,6 +2213,8 @@ Tkapp_DeleteCommand(PyObject *selfptr, PyObject *args)
 
        if (!PyArg_ParseTuple(args, "s:deletecommand", &cmdName))
                return NULL;
+
+#ifdef WITH_THREAD
        if (self->threaded && self->thread_id != Tcl_GetCurrentThread()) {
                Tcl_Condition cond = NULL;
                CommandEvent *ev;
@@ -2208,7 +2229,9 @@ Tkapp_DeleteCommand(PyObject *selfptr, PyObject *args)
                                 &command_mutex);
                Tcl_ConditionFinalize(&cond);
        }
-       else {
+       else
+#endif
+       {
                ENTER_TCL
                err = Tcl_DeleteCommand(self->interp, cmdName);
                LEAVE_TCL