Bug #10765

High CPU and GPU usage when hovering over Darkroom thumbnail

Added by John Morris over 3 years ago. Updated over 2 years ago.

Start date:
Due date:
% Done:


Affected Version:
hardware architecture:


In Darkroom mode, the mouse pointer hovering over a tumbnail causes markedly increased GPU and CPU usage.

Screenshot from 2015-12-09 11_04_46.png - NVIDIA X Server GPU status (139 KB) John Morris, 12/09/2015 02:46 AM

Screenshot from 2015-12-09 11_49_50.png - System Monitor (67 KB) John Morris, 12/09/2015 02:50 AM

Associated revisions

Revision 48472f2a
Added by Tobias Ellinghaus over 3 years ago

Fix a loop in draw/mouse_over_id handling

This fixes #10765. It will most likely introduce cases where users' Lua
code isn't updating the gui when it changed something. Those cases have
to be fixed case by case when we find them.


#1 Updated by Pedro CĂ´rte-Real over 3 years ago

  • Status changed from New to Confirmed
  • % Done changed from 0 to 10

While in the lighttable only moving between images causes a higher cpu load in the darkroom film strip that load is continuous even when the mouse isn't moving.

#2 Updated by Tobias Ellinghaus over 3 years ago

At least on lighttable that seems to be the OpenMP loop converting thumbnail data for display (d6b9c5ae9ae1a0129128921d9aa320dfe80350dc).

#3 Updated by Tobias Ellinghaus over 3 years ago

  • Target version set to Candidate for next major release
  • Status changed from Confirmed to In Progress
  • Assignee set to Tobias Ellinghaus
  • System changed from Ubuntu to all
  • % Done changed from 10 to 50

Confirmed for filmstrip, too, there it's a proper bug.

#4 Updated by Tobias Ellinghaus over 3 years ago

So, I worked out what happens, posting here for reference:

  • the mouse is moved over the filmstrip
  • filmstrip redraws itself
  • in the draw callback it sets the mouse_over_id
  • that triggers a DT_SIGNAL_MOUSE_OVER_IMAGE_CHANGE signal
  • metadata_view connects to that signal and updates its information
  • it calls dt_lua_do_chunk_async()
  • that eventually calls dt_lua_redraw_screen()
  • which in turn makes gtk redraw all widgets
  • goto 2

Besides metadata_view there is also lua/gui.c which does the same.

#5 Updated by Tobias Ellinghaus over 3 years ago

  • % Done changed from 50 to 100
  • Status changed from In Progress to Fixed

#6 Updated by John Morris over 3 years ago

Good, works fine, thanks.

#7 Updated by Salamandar Salamandar over 2 years ago

I'd like to report that this bug is either not fixed or came back.
I'm using Darktable 2.1.0+2082~g7cbc9ec on ArchLinux.

Also available in: Atom PDF