On Tue, Aug 21, 2007 at 01:57:40PM +0200, Dominik Vogt wrote:
> With this minimal .fvwm2rc fvwm hangs in startup for many seconds.
> 
>   ----------- BEGIN .fvwm2rc -----------
>   ModuleSynchronous Timeout 5 FvwmTheme
>   ------------ END .fvwm2rc ------------
> 
> I think something is broken in the module code.  Since it waits
> longer when more commands are added, fvwm may run into the module
> timeout repeatedly (but maybe not).

The attached patch is responsible for the bug.  It was committed
between 2007-08-05 23:00:00 and 2007-08-05 23:30:00.

Ciao

Dominik ^_^  ^_^

 --
Dominik Vogt, dominik.vogt (at) gmx.de
Index: ChangeLog
===================================================================
RCS file: /home/cvs/fvwm/fvwm/ChangeLog,v
retrieving revision 1.2963
retrieving revision 1.2964
diff -u -u -r1.2963 -r1.2964
--- ChangeLog   5 Aug 2007 20:49:10 -0000       1.2963
+++ ChangeLog   5 Aug 2007 21:17:28 -0000       1.2964
@@ -30,6 +30,12 @@
        (module_list_len):
        renamed as list handling functions
 
+       * fvwm/events.c (My_XNextEvent):
+       * fvwm/module_list.h:
+       * fvwm/module_list.c (module_alloc):
+       (do_execute_module):
+       removed useless is_cmdline_module stuff
+
 2007-08-05  Dominik Vogt  <dominik(dot)vogt(at)gmx(dot)de>
 
        * configure.ac:
Index: fvwm/events.c
===================================================================
RCS file: /home/cvs/fvwm/fvwm/fvwm/events.c,v
retrieving revision 1.544
retrieving revision 1.545
diff -u -u -r1.544 -r1.545
--- fvwm/events.c       5 Aug 2007 20:49:10 -0000       1.544
+++ fvwm/events.c       5 Aug 2007 21:17:28 -0000       1.545
@@ -4039,13 +4039,6 @@
        if (fFvwmInStartup)
        {
                modstore = module_get_next(NULL);
-               for (; modstore != NULL; modstore = module_get_next(modstore))
-               {
-                       if (MOD_IS_CMDLINE(modstore->module) == 1)
-                       {
-                               break;
-                       }
-               }
                if (modstore == NULL)
                {
                        /* last module */
Index: fvwm/module_list.c
===================================================================
RCS file: /home/cvs/fvwm/fvwm/fvwm/module_list.c,v
retrieving revision 1.14
retrieving revision 1.15
diff -u -u -r1.14 -r1.15
--- fvwm/module_list.c  5 Aug 2007 20:49:10 -0000       1.14
+++ fvwm/module_list.c  5 Aug 2007 21:17:28 -0000       1.15
@@ -129,7 +129,6 @@
        fmodule *module;
 
        module = (fmodule *)safemalloc(sizeof(fmodule));
-       MOD_SET_CMDLINE(module, 0);
        MOD_SET_REMOVED(module, 0);
        MOD_READFD(module) = -1;
        MOD_WRITEFD(module) = -1;
@@ -423,7 +422,6 @@
                {
                        /* add to the list of command line modules */
                        DBUG("executeModule", "starting commandline module\n");
-                       MOD_SET_CMDLINE(module, 1);
                }
 
                /* make the PositiveWrite pipe non-blocking. Don't want to jam
Index: fvwm/module_list.h
===================================================================
RCS file: /home/cvs/fvwm/fvwm/fvwm/module_list.h,v
retrieving revision 1.10
retrieving revision 1.11
diff -u -u -r1.10 -r1.11
--- fvwm/module_list.h  5 Aug 2007 20:49:10 -0000       1.10
+++ fvwm/module_list.h  5 Aug 2007 21:17:28 -0000       1.11
@@ -24,7 +24,6 @@
 {
        struct
        {
-               unsigned is_cmdline_module : 1;
                unsigned is_removed : 1;
        } xflags;
        int xreadPipe;
@@ -44,8 +43,6 @@
 } fmodule_store;
 
 
-#define MOD_IS_CMDLINE(m) ((m)->xflags.is_cmdline_module)
-#define MOD_SET_CMDLINE(m,on) ((m)->xflags.is_cmdline_module = !!(on))
 #define MOD_IS_REMOVED(m) ((m)->xflags.is_removed)
 #define MOD_SET_REMOVED(m,on) ((m)->xflags.is_removed = !!(on))
 #define MOD_READFD(m) ((m)->xreadPipe)

Attachment: signature.asc
Description: Digital signature

Reply via email to