Re: panes.refresh doesn't work

  • From: <tpgww@xxxxxxxxxxx>
  • To: emelfm2@xxxxxxxxxxxxx
  • Date: Mon, 19 Mar 2012 18:58:17 +1100

On Sun, 18 Mar 2012 18:19:15 +0100
Joe Koenig <joe.koenig@xxxxxx> wrote:

> I'm happy to report, that the issue is (almost) resolved with the
> latest SVN.  Thank you.

The important change is the KERNELFAM. Hopefully, someone will update the arch 
build-process to include some extra make parameter(s), as documented in 
Makefile.config. For example, my own standard build looks like
 make PREFIX=<whatever> STRIP=0 WITH_GTK2=1 WITH_LATEST=1 WITH_KERNELFAM=1 
NEW_COMMAND=1 \
   WITH_THUMBS=1 WITH_THUMBLIB=0 WITH_POLKIT=1 WITH_UDISKS=1 \
   CFLAGS="-O2 -march=<whatever> -Wl,--as-needed"

> One minor issue remains: although the auto-refresh works, the
> refresh-button seems to remain nonfunctional.

Now tweaked the file e2_pane.c in svn. Worth another try.

> 
> I've been downloading a big file and wanted to see the progress
> (volume-wise), so I hit the refresh-button.  No refresh.
> 
> So I did some further testing:
>   $ for i in {1..1000}; do touch $i; done
> to blindside the auto-refresh.  Sometimes auto-refresh can cope with
> this, most of the times it can't.  I don't consider this a bug, I
> expected it.  I just did it in order to test, whether the
> refresh-button would perform an explicit refresh.  It didn't.

The refresh algorithm is a bit convoluted. Basically, we don't want lots of 
back-to-back refreshes hogging all the cpu and/or gui. When a filelist is seen 
to be 'dirty', a refresh-request is logged, and will be acted upon when 
circumstances are suitable. To document its intricacies I'd need to inspect the 
code again, but in broad terms, lots of file-changes will result in some 
batching, meaning bigger delays between screen updates.

> Like I said, it's a minor issue to me, almost a non-issue.  However,
> if you'd like to debug this any further, I'll gladly be of
> assistance.
> 
> Just to be thorough: This time I didn't use "lLIBS += -lm -ldl".

Now done in Makefile.

  I
> did use:
>  $ export CFLAGS="-O1 -ggdb"; export CXXFLAGS="${CFLAGS}"; export DEBUG=1
>  $ make KERNELFAM=1

You can also use multiple arguments for make as described above, e.g:
 make KERNELFAM=1 CFLAGS="-O1 -ggdb" DEBUG=1

CXXFLAGS not used for emelFM2. FWIW, I think "-O0" is best for detailed 
debugging, if you ever need that.

Regards
Tom

> 
> P.S.: Although I doubt it will be of much help to you, I made a
> rudimentary backtrace of the initial function-call to
> e2_action_run().  If you want more, please give me detailed (read:
> verbose, step-by-step) instructions.  Feel free to contact me
> directly per email, if you deem it necessary (I'll keep reading the
> list, of course).

Probably not needed ATM (subject to result of using revised file, as above). 
But welcome to the world of debugging. Recently, with Geoff, we went through 
the process of rebuilding his gtk library, so that those "in ??" can be 
understood.

> 
>  Breakpoint 1, e2_action_run (from=0x82e4e70, art=0x833f6e8) at 
> src/actions/e2_action.c:794
>  794          if (art == NULL || art->action == NULL || art->action->func == 
> NULL)
>  #0  e2_action_run (from=0x82e4e70, art=0x833f6e8) at 
> src/actions/e2_action.c:794
>  #1  0x0808ca75 in _e2_toolbar_button_release_cb (button=0x82e4e70, 
> event=0x8427d78, art=0x833f6e8)
>      at src/e2_toolbar.c:1485
>  #2  0xb7c94cc2 in ?? () from /usr/lib/libgtk-3.so.0
>  #3  0xb7948c5c in g_closure_invoke () from /usr/lib/libgobject-2.0.so.0
>  #4  0xb795ba10 in ?? () from /usr/lib/libgobject-2.0.so.0
>  #5  0xb79645b9 in g_signal_emit_valist () from /usr/lib/libgobject-2.0.so.0
>  #6  0xb7964913 in g_signal_emit () from /usr/lib/libgobject-2.0.so.0
>  #7  0xb7de35d3 in ?? () from /usr/lib/libgtk-3.so.0
>  #8  0xb7c94372 in gtk_propagate_event () from /usr/lib/libgtk-3.so.0
>  #9  0xb7c947d8 in gtk_main_do_event () from /usr/lib/libgtk-3.so.0
>  #10 0xb7adf14c in ?? () from /usr/lib/libgdk-3.so.0
>  #11 0xb7b073f8 in ?? () from /usr/lib/libgdk-3.so.0
>  #12 0xb787707f in g_main_context_dispatch () from /usr/lib/libglib-2.0.so.0
>  #13 0xb78777b0 in ?? () from /usr/lib/libglib-2.0.so.0
>  #14 0xb7877dbb in g_main_loop_run () from /usr/lib/libglib-2.0.so.0
>  #15 0xb7c93a65 in gtk_main () from /usr/lib/libgtk-3.so.0
>  #16 0x08087c64 in main (argc=1, argv=0xbffff334) at src/e2_main.c:915
>  799          printd (DEBUG, "e2_action_run (from:, art:%s)", 
> art->action->name);


-- 
Users can unsubscribe from the list by sending email to 
emelfm2-request@xxxxxxxxxxxxx with 'unsubscribe' in the subject field or by 
logging into the web interface.

Other related posts: