Git Product home page Git Product logo

darktable-org / darktable Goto Github PK

View Code? Open in Web Editor NEW
8.9K 172.0 1.1K 1.21 GB

darktable is an open source photography workflow application and raw developer

Home Page: https://www.darktable.org

License: GNU General Public License v3.0

Emacs Lisp 0.01% CMake 1.09% Shell 0.79% Assembly 0.01% C 85.25% JavaScript 0.63% TeX 0.03% Lua 7.25% CSS 0.56% C++ 3.22% Objective-C++ 0.05% Makefile 0.01% Ruby 0.25% Nix 0.01% XSLT 0.21% Perl 0.36% Python 0.25% Awk 0.01% Dockerfile 0.02% Batchfile 0.02%

darktable's Introduction

icon darktable GitHub Workflow Status (branch) CII Best Practices

darktable is an open source photography workflow application and non-destructive raw developer - a virtual lighttable and darkroom for photographers. It manages your digital negatives in a database, lets you view them through a zoomable lighttable and enables you to develop raw images, enhance them and export them to local or remote storage.

screenshot_lighttable

darktable is not a free Adobe® Lightroom® replacement.

https://www.darktable.org/

Table of Contents

  1. Documentation
  2. Website
  3. Requirements
  4. Installing
  5. Updating from older versions
  6. Obtaining extensions
  7. Building
  8. Using
  9. Contributing
  10. FAQ
  1. Wiki
  2. Mailing lists

Documentation

The darktable user manual is maintained in the dtdocs repository.

Lua API documentation is maintained in the luadocs repository.

Website

The website (https://www.darktable.org/) is maintained in the dtorg repository.

Requirements

Supported platforms

  • Linux (64-bit)
  • FreeBSD (64-bit)
  • Windows (64-bit), 8.1 w/ UCRT and later
  • macOS 13.5 and later

Big-endian platforms are not supported.

32-bit platforms are not officially supported - they might or might not work.

Both darktable and the libraries it uses are developed on the Linux platform. Therefore, other platforms MAY have additional bugs that are not present in the Linux version. In addition, for example, on the Windows platform, printing support is not currently implemented. So we recommend, if you have a choice of platform, to use darktable on Linux.

Hardware

(workable minimum / recommended minimum):

  • RAM: 4 GB / 8 GB
  • CPU: Intel Pentium 4 (Core 2 for Windows) / Intel Core i5 4×2.4 GHz
  • GPU: none / Nvidia with 1024 CUDA cores, 4 GB, OpenCL 1.2 compatible
  • free disk space: 250 MB / 1 GB

darktable can run on lightweight configurations (even on a Raspberry Pi), but expect modules like denoise, local contrast, contrast equalizer, retouch or liquify to be slow beyond usable.

A GPU is not mandatory but is strongly recommended for a smoother experience. Nvidia GPUs are recommended for safety because some AMD drivers behave unreliably with some modules (e.g. local contrast).

Installing

If the latest release is still not available as a pre-built package for your distribution, you can build the software yourself following the instructions below.

Latest release

4.6.1 (stable)

When using a pre-built package, ensure that it has been built with Lua, OpenCL, OpenMP and Colord support. These are optional and will not prevent darktable from running if missing, but their absence will degrade the user experience. You can check for them by running darktable with the --version command line option.

Development snapshot

The development snapshot reflects the current state of the master branch. It is intended for testing and is generally not safe. See the notes below for warnings and precautions about using the master branch.

Updating from older versions

When updating darktable from an older release, you only need to install the newest version. Existing files will be preserved.

However, newer releases occasionally need to change the structure of the library database (containing the whole list of images known to darktable, with their editing history). If this happens you will be prompted with a request to either upgrade the database or close the software.

Migration to a newer database structure/newer release means that your edits (both new and old) will no longer be compatible with older versions of darktable. Upgrades are definitive. Newer versions are always compatible with older edits, but newer edits are generally not compatible with older versions.

darktable automatically backs up the library database when a new version causes it to be upgraded (in ~/.config/darktable/library.db-pre-3.0.0 for example), so you can revert to the previous release by restoring this backup if needed (simply rename it to library.db).

If you try to open a newer database with an older version of the software, any portions of your edits that were undertaken with new features will be discarded and you will lose them. This also applies to the sidecar XMP files.

If you plan to move regularly between two versions (new/unstable and old/stable) see below for details of how to do it safely.

Obtaining extensions

Extensions and plugins use the Lua scripting language and can be downloaded here. Lua support is optional in darktable, so make sure you have the lua interpreter and its development files (package lua-dev or lua-devel, depending on distributions) installed on your system while building or ensure the package you are using has been built with this library.

Extensions allow exporting for various media and websites, merge/stack/blend HDR, panoramas or focus bracketing, apply AI-based facial recognition, manage tags and GPS data, etc.

Building

Dependencies

Compatible compilers/toolchains:

  • Clang: 15 and later
  • GCC: 12 and later
  • MinGW-w64: 10 and later
  • XCode: 15.2 and later

Required dependencies (minimum version):

  • CMake 3.18
  • GTK 3.24.15
  • GLib 2.56
  • SQLite 3.15 (but 3.24 or newer strongly recommended)
  • Exiv2 0.27.2 (but at least 0.27.4 built with ISO BMFF support needed for Canon CR3 raw import)
  • pugixml 1.5

Required dependencies (no version requirement):

  • Lensfun (for automatic lens correction) (Note: alpha 0.3.95 and git master branch are not supported)
  • Little CMS 2

Optional dependencies (minimum version):

  • OpenMP 4.5 (for CPU multi-threading and SIMD vectorization)
  • LLVM 7 (for OpenCL checks at compilation time)
  • OpenCL 1.2 (for GPU-accelerated computing)
  • Lua 5.4 (for plugins and extension scripting)
  • libgphoto2 2.5 (for camera tethering)
  • Imath 3.1.0 (for 16-bit "half" float TIFF export and faster import)
  • libavif 0.9.3 (for AVIF import & export)
  • libheif 1.13.0 (for HEIF/HEIC/HIF import; also for AVIF import if no libavif)
  • libjxl 0.7.0 (for JPEG XL import & export)
  • WebP 0.3.0 (for WebP import & export)

Optional dependencies (no version requirement):

  • colord, Xatom (for fetching the system display color profile)
  • G'MIC (for .gmz compressed LUT support)
  • PortMidi (for MIDI input support)
  • SDL2 (for gamepad input support)
  • CUPS (for print mode support)
  • OpenEXR (for EXR import & export)
  • OpenJPEG (for JPEG 2000 import & export)
  • GraphicsMagick or ImageMagick (for misc image format import)

To install all the dependencies on Linux systems, you may use the source repositories of your distribution (provided they are up-to-date):

Fedora and RHEL/CentOS

sudo dnf builddep darktable

OpenSuse

sudo zypper si -d darktable

Ubuntu

sed -e '/^#\sdeb-src /s/^# *//;t;d' "/etc/apt/sources.list" \
  | sudo tee /etc/apt/sources.list.d/darktable-sources-tmp.list > /dev/null \
  && (
    sudo apt-get update
    sudo apt-get build-dep darktable
  )
sudo rm /etc/apt/sources.list.d/darktable-sources-tmp.list

Debian

sudo apt-get build-dep darktable

Install missing dependencies

If mandatory dependencies are missing on your system, the software build will fail with errors like Package XXX has not been found or Command YYY has no provider on this system. If you see one of these errors you should find out which package provides the missing package/command in your distribution, then install it. This can usually be done in your package manager (not the application manager customarily provided by default in your distribution) or from the internet with a search engine. You may need to install a package manager first (like APT on Debian/Ubuntu, or DNF on Fedora/RHEL).

This process might be tedious but you only need to do it once. See this page on building darktable for one-line commands that will install most dependencies on the most common Linux distributions.

Get the source

Master branch (unstable)

The master branch contains the latest version of the source code and is intended:

  • as a working base for developers,
  • for beta-testers to chase bugs,
  • for users willing to sacrifice stability for new features without waiting for the next release.

The master branch comes with no guarantee of stability and might corrupt your database and XMP files, result in loss of data and edit history or temporarily break compatibility with previous versions and commits.

How dangerous is it? Most of the time, it is fairly stable. As with any rolling-release kind of deployment, bugs appear more often but are fixed faster too. Sometimes, though, these bugs can result in losses or inconsistencies in the editing history of your pictures. This is fine if you don't need to open your edits again in the future, but maybe not if you manage an estate.

After backing up your ~/.config/darktable directory and the sidecar .XMP files of any pictures you intend to open with the master branch, you may obtain the source as follows:

git clone --recurse-submodules --depth 1 https://github.com/darktable-org/darktable.git
cd darktable

See below (in "Using") how to start a test install of the unstable version without damaging your regular stable install and files.

Latest stable release

4.6.1

The darktable project releases two major versions every year, on Summer and Winter Solstices, tagged with even numbers (e.g. 4.0, 4.2, 4.4, 4.6). Minor revisions are tagged with a third digit (e.g. 4.0.1, 4.0.2) and mostly provide bug fixes and camera support. You may want to compile these stable releases yourself to get better performance for your particular computer:

git clone --recurse-submodules --depth 1 https://github.com/darktable-org/darktable.git
cd darktable
git fetch --tags
git checkout tags/release-4.6.1

Get submodules

Note that libxcf, OpenCL, RawSpeed, whereami and LibRaw are tracked via git submodules, so after checking-out darktable, you need to update/checkout the submodules too:

git submodule update --init

Compile

Easy way

WARNING: If you have previously built darktable, don't forget to first completely remove (rm -R) the build and /opt/darktable directories to avoid conflicting files from different versions. Many weird behaviours and transient bugs have been reported that can be traced to the build cache not properly invalidating the changed dependencies, so the safest way is to completely remove previously built binaries and start again from scratch.

darktable provides a shell script that automatically takes care of building on Linux and macOS for classic cases in a single command.

./build.sh --prefix /opt/darktable --build-type Release --install --sudo

If you want to install a test version alongside your regular/stable version, change the install prefix:

./build.sh --prefix /opt/darktable-test --build-type Release --install --sudo

This builds the software for your architecture only, with:

  • -O3 optimization level,
  • SSE/AVX support if detected,
  • OpenMP support (multi-threading and vectorization) if detected,
  • OpenCL support (GPU offloading) if detected,
  • Lua scripting support if detected.

If you want to have dartkable displayed along your other applications, you only need to add a symbolic link:

ln -s /opt/darktable/share/applications/org.darktable.darktable.desktop /usr/share/applications/org.darktable.darktable.desktop

Now, your custom-built darktable is ready to be used just like any pre-packaged software.

Manual way

Alternatively, you can use a manual build to pass custom arguments.

Linux
mkdir build
cd build
cmake -DCMAKE_INSTALL_PREFIX=/opt/darktable/ ..
cmake --build .
sudo cmake --install .
macOS

See Homebrew or MacPorts instructions.

Windows

See these instructions.

Using

Test/unstable version

To use a test version of darktable without damaging your regular/stable version's files and database, start darktable in a terminal with:

/opt/darktable-test/bin/darktable --configdir "~/.config/darktable-test"

and ensure that you set the option "create XMP files" to "never" in preferences -> storage -> XMP sidecar files. This way, your regular/stable version will save its configuration files in ~/.config/darktable, as usual, the test/unstable one will save in ~/.config/darktable-test, and the two versions will not produce database conflicts.

Regular/stable version

Simply launch it from your desktop application menu or, from a terminal, run darktable or /opt/darktable/bin/darktable. If the installation did not create a launcher in your applications menu, run:

sudo ln -s /opt/darktable/share/applications/org.darktable.darktable.desktop /usr/share/applications/org.darktable.darktable.desktop

You may find darktable configuration files in ~/.config/darktable. If you experience crashes at startup, try launching darktable from a terminal with OpenCL disabled using darktable --disable-opencl.

Further reading

There is a comprehensive list of build instructions for Ubuntu/Debian related distributions or for Fedora and related distributions. These build instructions can be easily adapted to many other Linux distributions.

Contributing

There are many ways you can contribute to the darktable project:

FAQ

Why is my camera not detected when plugged-in ?

Check that you have the latest gphoto2 library installed in order to support the newest cameras.

Why is my lens not detected/corrected in darkroom ?

Lens correction profiles are provided by Lensfun, which has 2 parts: a program and a database. Most Linux distributions provide a recent enough version of the program, but provide an outdated version of the database. If Lensfun is correctly installed, then update its database in a terminal by running:

lensfun-update-data

or alternatively

/usr/bin/g-lensfun-update-data

Why do the thumbnails in the lighttable view look different to the preview in the darkroom view ?

For RAW files that have never been edited in darktable (when you have just imported them), the lighttable view, by default, shows the JPEG preview placed into the RAW file by your camera. Loading this JPEG file is faster and makes the lighttable view more responsive when importing large collections of images.

However, this JPEG thumbnail is processed by the firmware of the camera, with proprietary algorithms, and colors, sharpness and contrast that might not look the same as darktable processing (which is what you see when opening the image in the darkroom view). Camera manufacturers don't publish details of the pixel processing they perform in their firmware so their look is not exactly or easily reproducible by other software.

However, once RAW images have been edited in darktable, the lighttable thumbnail should exactly match the darkroom preview, as they are processed in the same way.

If you never want to see the embedded JPEG thumbnail in the lighttable view, for RAW files, you should set the option "use raw file instead of embedded JPEG from size" to "never" in preferences -> lighttable.

Wiki

Mailing lists

darktable's People

Contributors

alicvb avatar aurelienpierre avatar bieber avatar boucman avatar dterrahe avatar dtorop avatar edgarlux avatar edgomez avatar elstoc avatar hanatos avatar hean01 avatar houz avatar jcsogo avatar jenshannoschwalm avatar johnny-bit avatar jpellegrini avatar kmilos avatar lebedevri avatar lebmich avatar mrig avatar nilvus avatar parafin avatar pedrocr avatar phweyland avatar pmjdebruijn avatar ralfbrown avatar rawfiner avatar turbogit avatar upegelow avatar victoryforce avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

darktable's Issues

Windows Colors and image changeing without alter

Hi.
I have the following problem:
My darktable behaves strange.
It changes information of the color (but not the slider, only image) if i do stuff refreshing the screen like croping. Also the Histogramm behaves strange.
It is hard to explain, but maybe a movi clip will help you: How can the CUT tool change colors.
I Think, windows update and a Windows libary are the problem, but i dont know :(

https://www.youtube.com/watch?v=h1SeCO5AS4k

(I am very sorry about my poor english, but i hope you understand my problem ^^ )

remove code konami

Describe the bug
darktable has an easter-egg that can be triggered by typing the code konami (↑ ↑ ↓ ↓ ← → ← → b a):

int dt_view_manager_key_pressed(dt_view_manager_t *vm, guint key, guint state)
{
  /* darktable color management is broken but we have a code konami easter-egg 
   * is that a photo editor or what ?
   * also, it seems broken too
   */
  // ↑ ↑ ↓ ↓ ← → ← → b a
  static int konami_state = 0;
  static guint konami_sequence[] = {
    GDK_KEY_Up,
    GDK_KEY_Up,
    GDK_KEY_Down,
    GDK_KEY_Down,
    GDK_KEY_Left,
    GDK_KEY_Right,
    GDK_KEY_Left,
    GDK_KEY_Right,
    GDK_KEY_b,
    GDK_KEY_a
  };
  if(key == konami_sequence[konami_state])
  {
    konami_state++;
    if(konami_state == G_N_ELEMENTS(konami_sequence))
    {
      dt_ctl_switch_mode_to("knight");
      konami_state = 0;
    }
  }
  else
    konami_state = 0;

  int film_strip_result = 0;
  if(!vm->current_view) return 0;
  if(vm->current_view->key_pressed)
    return vm->current_view->key_pressed(vm->current_view, key, state) || film_strip_result;
  return 0;
}

(from src/views/view.c)

To Reproduce
Steps to reproduce the behavior:

  • Type the code konami: ↑ ↑ ↓ ↓ ← → ← → b a
  • nothing happens

Expected behavior
Launch some 8-bit video game

I say we remove that bit. It's not worth maintaining, it's broken, and useless anyway.

Add support for Space Navigator (3D Mouse / 6 axis)

The Space Navigator is a 6 axis (3 rotations / 3 translations) + 2 buttons joystick used primarily to move/handle objects in 3D space, in apps such as CAD and 3D modellers. It has 2 drivers on Linux, one proprietary, one free. The free one is packaged in all the Linux distros I have tested (Ubuntu, Debian, Fedora) and the API are compatible.

I propose to add the support for it, as I own one. I will need some guidance, because I have never integrated drivers before (namely : which files to hack).

Basic features could be mapping axes with darkroom preview and lighttable (zoom in, zoom out, scroll x, scroll y).

Gruped mode with filter "all except rejected" shows both images

I have RAW+JPG of the same image, both not rejected with rating 1 star. Working with lighttable.

  1. No filters or grouping, both images are visible in lighttable - expected result
  2. Click "grouped images" icon - only RAW is visible - expected result
  3. Select view "all except rejected" - both images are visible - unexpected result. I would assume that only RAW should be visible.
  4. Select view ">=1" - only RAW is visible - expected result

windows: cannot enter text in "collect images"

In the entry of the collect image module (and under WIndows only) we cannot enter text. It is possible to clear the selection in the entry with backspace, but no character can be entered for whatever mode is selected (tag, filename, film roll, folders...)

Limit output resolution/size from darkroom

From https://redmine.darktable.org/issues/12351.

When processing noisy images (e.g. ISO 6400), I do not export with full pixel count but limit to a reasonable size that hides the noise a bit. The same holds for slightly unsharp images. That way, the maximum usable image size, e.g. maximum print size, is given by the image resolution and limited such that the technical flaws are not visible for the people viewing the picture.

Unfortunately, the output size/resolution is determined in lighttable mode and the image itself does not carry this information. When I export an old picture again, I maybe forget that it was a blurry shot and therefore it is sent out at e.g. full resolution. Furthermore, when processing a set of images, one always has to export one by one to account for the blurry/noisy shots. It would therefore be great if one could limit the resolution from within darkroom such that is cannot be overridden by the export module (smaller export would still be possible). A new module “limit output size” would be a reasonable way to implement this feature. Within the module, the output size limit could be selected as either (maybe a dropdown to choose among these)

  • absolute pixel numbers (input of two numbers, max. horizontal and vertical pixel count; dependent on the aspect ratio, one of the numbers wins, as in the export module),
  • megapixel count (input one number, e.g. 10M, and the closest smaller size that would match the aspect ratio is used), or
  • factor of the original size (e.g. “2” for downscaling to half the size; factor 2 would therefore mean quarter of the pixel count; or, instead, the factor of the pixel count to avoid the necessity of sqrt(2) input; or maybe both options).

The darkroom view would of course follow the limitation to have a reasonable preview. The module itself would also show the actual output size limit of the image.

I thought a bit more about that idea, and came to the conclusion that there is an easy part and a difficult one. The easy part would be to implement a factor of the original size. This could, in the UI, just be a text entry or a slider. A widget that computes and shows the resulting image size would be convenient. The benefit is that this does not interfere with changes in the crop. It would only require one additional entry in the xmp/data base, which is the scaling factor as a float number.

The other two ways to specify the scaling have the issue that they fail for strong crops, where you may even go below the specified output size. Therefore, for the other two options, the UI would have to reflect what it refers to, the original image size or the crop (a check box named “referred to the crop size” which is initially not checked, and an “upscaling allowed” check box.

The first, easy, solution would already help a lot, so the implementation of this feature would not have to go the entire way at a time.

Slightly related: https://redmine.darktable.org/issues/12234

Inverted mask with feathering and opacity added to original not initially inverted as expected

Inverting a mask with feathering and opacity enabled not as expected.pdf
The attached PDF show the masking issue that I notice when feathering and opacity are added as demonstrated in the blog post with the cabin from the DT release of 2.60. I am using windows....Inverting the mask initially masks the entire image until you pull the opacity back down....initially I did not try that so it appeared to be a bug...maybe this is the way it should work....You can check this out on the DT facebook page or its outlined in the attached link to the PDF file....

Enable mixed (mouse + keyboard) shortcuts/accels

For now, we can only assign keyboard shortcuts to GUI events such as slider increase/decrease/reset. That makes at least 3 shortcuts by setting, and enforces to use both hands on the keyboard, while the mouse is still often needed, so we need to move too much (repetitive strain injury for the win).

I would like to be able to assign only one letter to a slider (E for exposure, T for temperature, H for hue etc.) and then use the mouse to increase/decrease/reset the value. For example:

  • Wheel up: fine increase
  • Wheel down: fine decrease
  • Right click: coarse increase
  • Left click: coarse decrease
  • Double click: reset

That way, we have only one shortcut to remember per setting, and one hand always stays on the keyboard (to select the setting) while the other hand always stays on the mouse (to modify the value), and the ergonomics are much better.

Make color checker module compatible with RGB Cube LUTs

There are plenty of good film-emulation LUTs out there (https://www.colorgradingcentral.com/free-luts/) used for video editors. These are RGB LUTs taking usually log-encoded input from cameras, and outputing linear RGB (ACES or REC 2020).

Making darktable colorchecker module able to read these LUTs would enable users to take advantage of the existing film-emulations databases. These are really difficult to reproduce with the color-checker tool because they need a film scanner properly neutralized/calibrated, to provide a scanner-agnostic film reference, then a properly neutralized raw file, to provide a camera-agnostic base for the LUT grading, and only then it becomes possible to transfer the film look. This is not possible without a full lab and adequate ressources, and darktable options only allow local work-arounds. Also, we don't want to fully apply the film characteristics (especially the tone curve), since its dynamic range can be more limited than digital for color emulsions, but we might want to retain the advantages of digital (shadows recovery) and the feeling of the film (color, smooth transitions).

Instead, making the colorchecker capable of reading cube LUTs would require a log transformation of the input, then a modification of the actual algo from Lab to RGB. The output would need to be converted back to Lab, although if #1841 achieves to provide a full RGB pipe, that would not be necessary anymore.

Technical details on the 3D Cube LUTs can be found here : 

filmique, preserve chrominance issue

Now there is a very very important change in brightness when the "preserve chrominance" option is activated

  • OS: [build on linux mint]
  • Version [2.7.0+270] (git download 2019-01-22)

Additional context
On previous build version (git download 2019-01-21) filmique was fine with "preserve chrominance" option

French translation: minor issues

Dans les options de fusion des masques :

mask contrast -> actuel : masque de contraste -> suggéré : contraste du masque (l'inversion nom/complément en Fr revient souvent)

mask blur -> actuel : masque d'adoucissement -> suggéré : floutage du masque

mask feathering -> actuel : rayon adoucissement -> suggéré : adoucissement du masque

Dans la balance des couleurs :

contrast fulcrum -> actuel : contraste pivot -> suggéré : pivot du contraste

Dans filmique :

middle-grey destination -> actuel : destination du gris moyen -> suggéré : gris moyen cible (label anglais à revoir)

destination power factor -> actuel : destination facteur de puissance -> suggéré : gamma cible (label anglais à revoir)

En général : en anglais, le complément du nom est placé devant le nom qu'il qualifie. En français, c'est l'inverse.

Poke @TurboGit ;-)

[UI usability] [WIP] masks selection from icons in 1-click

Is your feature request related to a problem? Please describe.
I make use of masks more than often, others probably do so, and it always bugs me that to access one of the few masking options I have to :

  • click on the combobox
  • hover to my selected mask
  • click on it

to be able to select my mask.
To me, masks are a feature important enough for it to be a 1-click action to select the mask type and unfold its options.

Describe the solution you'd like
I would like to see an horizontal box with icons to select the mask type and allowing to access it in 1 click replacing the cumbersome combobox.

Screenshot of what I did after hacking a bit in the code :

basic view
image

tooltips on hover are preserved
image

toggling: when one mask option is clicked, the mask becomes active and the box is toggled
image

disabling: mask can be disabled by clicking the cross on the left
1 hovering the cross
image

2 after clicking the cross
image

Additional context
I've taken caution of preserving the following functionalities :

  • in the darkroom, when the displayed image is updated (by film roll or key press), the toggled mask icon is updated appropriately to the updated image modules settings.
  • only one mask type can be enabled at any time
    and add this spec:
  • the cross doesn't stay toggled once clicked as it is rather an un-toggling button

Currently I've implemented the proposed feature in an additive way (apart from not showing the combobox, every line of code that is related to it is still present). I'm looking forward to get rid of it without breaking anything yet, and to reuse at most the existing code and structures in develop/blend.h develop/blend.c and develop/blend_gui.c

I'll submit a PR once I'm completed.

Let me know what you think of the feature I propose :)

[Feature request] Use the one or more selection areas to auto generate the parmetric mask

If you want to create a parametric mask, you have to move the slider manually for one (or more) channels. Color picker helps to estimate where the desired areas to be selected are located on each channel.

Can color picker area be used to auto generate the parametric mask?

The best way to explain what I mean is to give an example.

In this image I would like to mask red and blue berries:

mask1

Now I choose an area to mask the red berries. Color and brightness values are read out and the parametric mask is generated:

mask2

To this mask I add an additional value by selecting the blue berry:

mask3

In order to make the mask even more precise, I choose at the end an area that should be subtracted from the mask:
mask4

I have to admit that I'm not a developer and I can't judge whether such a thing would be achievable. However, from a user perspective, I think this would be a great enhancement.

Ability to disable some modules while in darkroom

I have a few modules that I always use by default: the two instances of profiled denoise, chromatic abberations, lens correction and so on.
The sum of these modules slows darktable down quite a bit, though.
I do not find the proposed solution of enabling these modules at last very elegant.

My idea:
Give us a list in the settings where for each module it can be selected under what circumstances it is enabled, e.g. when zoomed in to 100%, when the module is selected or always.

That way I can enable these modules by default on import and they only slow my processing down when I fine tune them or when I work on fine details (zoomed in all the way).

Of course when exporting pictures all enabled modules will be used

Expose more parameters for manual control in Lens Correction module

The Lens Correction module in darktable could be made more useful by adding manual adjustment for distortion and vignetting parameters, similar to those that already exist for TCA.

This would provide several benefits:

  • Allow a user to adjust the results from an existing lens profile, for whatever reason (sometimes full correction of vignetting isn't desired, for instance).
  • Allow a user to make some correction for images where no profile is available.
  • Provide a useful tool for those producing lens profiles for the LensFun project, allowing to fine-tune parameters in a way that is very awkward and unintuitive to do in Hugin.

Ideally, these sliders would always display the actual current values being applied, unlike the current implementation of the TCA sliders, where they show "1.00000" even after a profile is applied, and upon manually changing one value, both shown replace whatever was previously applied, which can be considered a confusing behavior, I think.

If showing the full set of sliders for all parameters of the more complex versions of the polynomials (a, b, c of "ptlens" distortion model and br, vr, bb, vb for complex TCA correction, etc) is considered too "busy" then perhaps a "simple" mode could be shown by default, whith a checkbox for "complex mode". However, given the space used by some modules, and the fact that this one doesn't offer a "blending" section, it might not be unreasonable to display a full set by default, as long as they were slightly distinguished from the more universally relevant "mm", "f/", and "d" etc information at the top.

There may be some uncommonly used models implemented in LensFun, but in practice the profiles generally (all in the current database, AFAIK) use ptlens/poly3 for distortion, poly3 for TCA, and pa for vignetting. How to handle the unlikely case where a profile using other models was loaded would be an open question; in the short term I think simply disabling the controls (perhaps with a way to explicitly activate them to override the profile) would be good enough.

Hopefully this would be not too hard for somebody with some GTK skills. :)

Configurable font-size

I would like to be able to configure the size of the font used for menus and text elements in the panels.

Additional Context : I actually am facing this issue while using darktable on an external display connected to my laptop (mac OS X) : I can barely read the menus and options due to the size of the font being too small.

Redraw failure in lighttabe

Describe the bug
Changing the thumbnail size does not force redraw of the whole lighttable.

To Reproduce
Steps to reproduce the behavior:

  1. Checkout and build fff6ec3
  2. Change the number of images per row with alt-1/alt-3

Expected behavior
A redraw of all thumbnails in the correct size.

Platform (please complete the following information):

Additional context
May have to do with recent lighttable speed improvements.

Can't decode Nikon Z6/Z7 uncompressed raw file

Describe the bug
Darktable is lacking support in rawspeed for using uncompressed raw files from the Nikon Z6.

To Reproduce
Steps to reproduce the behavior:

  1. Open Darktable
  2. Import a Nikon Z6 uncompressed raw file
  3. Get the "unable to read white balance" error.

Expected behavior
Open the uncompressed raw file correctly.

Screenshots
If applicable, add screenshots to help explain your problem.

Platform (please complete the following information):

  • OS: all
  • Version 2.6.0

Additional context
See here for more details.

Batch process from command line

Is your feature request related to a problem? Please describe.
A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]

I have to process a folder with a huge amount of image and apply a given XMP to all of them. Currently I need create a for loop and call darktable-cli for every image separately.

Describe the solution you'd like
A clear and concise description of what you want to happen.

  • Allow darktable-cli to accept input list, something similar to Ghostscript @filename will work, of course this will mean to specify an output path and extension rather then a filename.

Describe alternatives you've considered
A clear and concise description of any alternative solutions or features you've considered.

Or give an options for darktable to be run as a daemon, where we can send the input and it will return the output. While a for loop will still be necessary, there will be a significant performance gain because darktable won't need to be reloaded on every iteration.
This will be even more efficient when working with servers.

Additional context
Add any other context or screenshots about the feature request here.

I'm planning to use this as a backend of a photo-sharing platform where we upload over 1 million photos every and applying instagram-like filters on the fly is one of the core functionalities I'm looking to provide.

OS X App: recent lensfun db

Hi,
I'd like to use darktable on OS X with newer lensfun db versions.
The reason for this is the usage of converted lens profiles from Camera RAW. I somehow don't manage to build a functional version of darktable in OS X using newer lensfun versions. The built version randomly crahes. But this could be related to other dependencies of the build.
Is it possible to bundle the OS X app with a more recent lensfun version?

Recent collections hardly usable in many circumstances

For people using e.g. color labels or regular tags for workflow management, the recent collections module becomes hardly usable. It shows several identical lines (the different part is not visible due to panel size limit), similar to

date >2017:12:01 and tag people|mode...
date >2017:12:01 and tag people|mode...
date >2017:12:01 and tag people|mode...
date >2017:12:01 and tag people|mode...
date >2017:12:01 and tag people|mode...
date >2017:12:01 and tag people|mode...
date >2017:12:01 and tag people|mode...
date >2017:12:01 and tag people|mode...
date >2017:12:01 and tag people|mode...
date >2017:12:01 and tag people|mode...

It would be great if there would be a second module that allows for switching on and off color labels and selected tags such that their selection would be reflected in the images visible but not lead to a new entry in the recent collections.

In my case above, there would be only one of these lines left in the recent collections, and the color labels and tags that are switched on and off during, e.g., preparation of a photo book, calendar, etc., would not render the module unusable.

The contents of the “switch board” module I talk about could have some reasonable default, but it would be extremely helpful to be able to configure it, e.g. by a configuration text file. That way, it could even be switched between different text files via different presets, e.g. by abusing the preset mechanism a bit and matching the preset name to a config file in ~/.config/darktable/switchboard/. Each line of the preset file would correspond to one UI line, example:

colorlabel_red colorlabel_yellow colorlabel_green
tag("people|%" "People") tag("analog|%" "Analog")
tag("darktable|changed" "Changed") tag("darktable|exported" "Exp.")
history_altered

would give a module layout such as (“[.]” represents a toggle button that can toggle between unchecked, active (green) and active inverted (red), the latter meaning that e.g. only pictures without that tag/state are shown)

[r][y][g]
[People][Analog]
[Changed][Exp.]
[Hist. alt.]

Hope that makes sense.

Noise Profile Loading Error - Only "Generic Poissonian" Available

Description
For whatever reason, the Noise Reduction (Profiled) option only lets me select Generic Poissonian as a preset. None of the built in ones or the custom one I made for my camera are available. This occurs with and without the --noiseprofiles command.

I experienced the bug on Linux Mint 18.3's binary (2.4.4) and on the one I just compiled (2.7.0). I have libjson-glib installed, version 1.1.2-0ubuntu1

To Reproduce
Steps to reproduce the behavior:

  1. Create a noise profile for a Canon Powershot SX170IS, or use the ones I've attached
  2. Launch darktable with the --noise-profiles option on presets.json
  3. Open a .dng file from the camera in question
  4. Note the lack of an option in the noise removal section

Expected Behavior;
A list of all the devices I have presets for, such as the one that appears correctly in the Lens Correction area.

image

Platform:

  • OS: Linux Mint 18.3
  • Version: 2.7.0
...
compile options:
  bit depth is 64 bit
  normal build
  SSE2 optimized codepath enabled
  OpenMP support enabled
  OpenCL support enabled
  Lua support enabled, API version 5.0.0
  Colord support enabled
  gPhoto2 support enabled
  GraphicsMagick support enabled
  OpenEXR support enabled

Attached is the .tar.gz, presets.json and a couple RAW files from the camera.
files.zip

Edit: This also occurs on my Arch Linux install, so it's not related to this particular system either.

make the histogram read-only

I'm working on a clean-up of the UI, to make it more minimalistic in order to keep the focus on the picture. That is, less distractions in the panels. See #2037

Currently, the histogram is an active area where one can drag the shadows and the highlights to quickely edit the exposure and black level. The thing is, the setting increments are rather coarse, not configurable (except in darktablerc, when you know it), and I discovered this feature by accident.

I would like to make the histogram read-only, meaning removing the active parts.

I also would like to remove the EXIF settings display, because it's redundant with the EXIF box on the left panel.

Then, I would like to make the histogram slightly smaller in height, to leave more space to modules.

Any objection ?

DT release 2.6.0 segfaults on linux Manjaro

I downloaded the release source tarball from the link provided (not the github autogenerated one). It compiled and installed fine, but upon launching darktable I get a segfault. Tried multiple times, always the same. Here's the trace:

this is darktable 2.6.0 reporting a segfault:

warning: Currently logging to /tmp/darktable_bt_6G6NUZ.txt.  Turn the logging off and on to make the new setting effective.
#0  0x00007f9f74908d42 in waitpid () at /usr/lib/libpthread.so.0
#1  0x00007f9f74a51b50 in _dt_sigsegv_handler (param=11) at /home/sguyader/Sources/darktable-2.6.0/src/common/system_signal_handling.c:118
#2  0x00007f9f7476ae00 in <signal handler called> () at /usr/lib/libc.so.6
#3  0x00007f9f74cb4a85 in _dl_close () at /lib64/ld-linux-x86-64.so.2
#4  0x00007f9f7486af57 in _dl_catch_exception () at /usr/lib/libc.so.6
#5  0x00007f9f7486aff3 in _dl_catch_error () at /usr/lib/libc.so.6
#6  0x00007f9f713a38bf in  () at /usr/lib/libdl.so.2
#7  0x00007f9f713a3288 in dlclose () at /usr/lib/libdl.so.2
#8  0x00007f9f500f4e5f in  () at /opt/intel/opencl/libigdfcl.so
#9  0x00007f9f500f45ae in Create () at /opt/intel/opencl/libigdfcl.so
#10 0x00007f9f5068b152 in  () at /opt/intel/opencl/libigdrcl.so
#11 0x00007f9f5068b1d7 in  () at /opt/intel/opencl/libigdrcl.so
#12 0x00007f9f506825b7 in  () at /opt/intel/opencl/libigdrcl.so
#13 0x00007f9f50682dd1 in  () at /opt/intel/opencl/libigdrcl.so
#14 0x00007f9f50670104 in  () at /opt/intel/opencl/libigdrcl.so
#15 0x00007f9f505e28ed in  () at /opt/intel/opencl/libigdrcl.so
#16 0x00007f9f506563a9 in  () at /opt/intel/opencl/libigdrcl.so
#17 0x00007f9f74a40447 in dt_opencl_build_program (dev=dev@entry=0, prog=prog@entry=0, binname=binname@entry=0x7fffd95600b0 "/home/sguyader/.cache/darktable/cached_kernels_for_IntelRHDGraphics/demosaic_ppg.cl.bin", cachedir=cachedir@entry=0x7fffd955c0b0 "/home/sguyader/.cache/darktable/cached_kernels_for_IntelRHDGraphics", md5sum=md5sum@entry=0x7fffd955ac80 "a5513e7725ddd38908295672e1ada71e", loaded_cached=0) at /home/sguyader/Sources/darktable-2.6.0/src/common/opencl.c:1683
#18 0x00007f9f74a418a4 in dt_opencl_device_init (cl=cl@entry=0x55eb0eb97cd0, dev=dev@entry=0, devices=devices@entry=0x55eb0e7dc900, k=k@entry=0, opencl_memory_requirement=opencl_memory_requirement@entry=768) at /home/sguyader/Sources/darktable-2.6.0/src/common/opencl.c:456
#19 0x00007f9f74a46608 in dt_opencl_init (cl=0x55eb0eb97cd0, exclude_opencl=<optimized out>, print_statistics=<optimized out>) at /home/sguyader/Sources/darktable-2.6.0/src/common/opencl.c:671
#20 0x00007f9f749e706a in dt_init (argc=<optimized out>, argv=<optimized out>, init_gui=<optimized out>, load_data=<optimized out>, L=<optimized out>) at /home/sguyader/Sources/darktable-2.6.0/src/common/darktable.c:889
#21 0x000055eb0e2c3076 in main (argc=<optimized out>, argv=<optimized out>) at /home/sguyader/Sources/darktable-2.6.0/src/main.c:82

=========

  Id   Target Id                                       Frame 
* 1    Thread 0x7f9f6a7a4dc0 (LWP 2317) "darktable"    0x00007f9f74908d42 in waitpid () from /usr/lib/libpthread.so.0
  2    Thread 0x7f9f6a4ae700 (LWP 2318) "gmain"        0x00007f9f74823c21 in poll () from /usr/lib/libc.so.6
  3    Thread 0x7f9f69cad700 (LWP 2319) "pool"         0x00007f9f748294ed in syscall () from /usr/lib/libc.so.6
  4    Thread 0x7f9f694ac700 (LWP 2320) "gdbus"        0x00007f9f74823c21 in poll () from /usr/lib/libc.so.6
  5    Thread 0x7f9f5bbff700 (LWP 2321) "worker 0"     0x00007f9f74904afc in pthread_cond_wait@@GLIBC_2.3.2 () from /usr/lib/libpthread.so.0
  6    Thread 0x7f9f5b3fe700 (LWP 2322) "worker 1"     0x00007f9f74904afc in pthread_cond_wait@@GLIBC_2.3.2 () from /usr/lib/libpthread.so.0
  7    Thread 0x7f9f5abfd700 (LWP 2323) "worker 2"     0x00007f9f74904afc in pthread_cond_wait@@GLIBC_2.3.2 () from /usr/lib/libpthread.so.0
  8    Thread 0x7f9f5a3fc700 (LWP 2324) "worker 3"     0x00007f9f74904afc in pthread_cond_wait@@GLIBC_2.3.2 () from /usr/lib/libpthread.so.0
  9    Thread 0x7f9f59bfb700 (LWP 2325) "worker 4"     0x00007f9f74904afc in pthread_cond_wait@@GLIBC_2.3.2 () from /usr/lib/libpthread.so.0
  10   Thread 0x7f9f593fa700 (LWP 2326) "worker 5"     0x00007f9f74904afc in pthread_cond_wait@@GLIBC_2.3.2 () from /usr/lib/libpthread.so.0
  11   Thread 0x7f9f58bf9700 (LWP 2327) "worker 6"     0x00007f9f74904afc in pthread_cond_wait@@GLIBC_2.3.2 () from /usr/lib/libpthread.so.0
  12   Thread 0x7f9f53fff700 (LWP 2328) "worker 7"     0x00007f9f74904afc in pthread_cond_wait@@GLIBC_2.3.2 () from /usr/lib/libpthread.so.0
  13   Thread 0x7f9f537fe700 (LWP 2329) "kicker"       0x00007f9f747fb6a8 in nanosleep () from /usr/lib/libc.so.6
  14   Thread 0x7f9f52ffd700 (LWP 2330) "worker res 0" 0x00007f9f74904afc in pthread_cond_wait@@GLIBC_2.3.2 () from /usr/lib/libpthread.so.0
  15   Thread 0x7f9f527fc700 (LWP 2331) "worker res 1" 0x00007f9f74904afc in pthread_cond_wait@@GLIBC_2.3.2 () from /usr/lib/libpthread.so.0
  16   Thread 0x7f9f2bfff700 (LWP 2332) "darktable"    0x00007f9f74826591 in pselect () from /usr/lib/libc.so.6

=========

Thread 16 (Thread 0x7f9f2bfff700 (LWP 2332)):
#0  0x00007f9f74826591 in pselect () at /usr/lib/libc.so.6
#1  0x00007f9f506ba058 in  () at /opt/intel/opencl/libigdrcl.so
#2  0x00007f9f506c585b in  () at /opt/intel/opencl/libigdrcl.so
#3  0x00007f9f506ba49e in  () at /opt/intel/opencl/libigdrcl.so
#4  0x00007f9f748fea9d in start_thread () at /usr/lib/libpthread.so.0
#5  0x00007f9f7482eb23 in clone () at /usr/lib/libc.so.6

Thread 15 (Thread 0x7f9f527fc700 (LWP 2331)):
#0  0x00007f9f74904afc in pthread_cond_wait@@GLIBC_2.3.2 () at /usr/lib/libpthread.so.0
#1  0x00007f9f74a5c99b in dt_pthread_cond_wait (mutex=0x55eb0e7cd180, cond=0x55eb0e7cd1d0) at /home/sguyader/Sources/darktable-2.6.0/src/common/dtpthread.h:327
        old = 0
        tmp = 0
        params = <optimized out>
        s = 0x55eb0e7cc680
        name = "worker res 1\000\000\000"
        threadid_res = 1
#2  0x00007f9f74a5c99b in dt_control_work_res (ptr=<optimized out>) at /home/sguyader/Sources/darktable-2.6.0/src/control/jobs.c:529
        old = 0
        tmp = 0
        params = <optimized out>
        s = 0x55eb0e7cc680
        name = "worker res 1\000\000\000"
        threadid_res = 1
#3  0x00007f9f748fea9d in start_thread () at /usr/lib/libpthread.so.0
#4  0x00007f9f7482eb23 in clone () at /usr/lib/libc.so.6

Thread 14 (Thread 0x7f9f52ffd700 (LWP 2330)):
#0  0x00007f9f74904afc in pthread_cond_wait@@GLIBC_2.3.2 () at /usr/lib/libpthread.so.0
#1  0x00007f9f74a5c99b in dt_pthread_cond_wait (mutex=0x55eb0e7cd180, cond=0x55eb0e7cd1d0) at /home/sguyader/Sources/darktable-2.6.0/src/common/dtpthread.h:327
        old = 0
        tmp = 0
        params = <optimized out>
        s = 0x55eb0e7cc680
        name = "worker res 0\000\000\000"
        threadid_res = 0
#2  0x00007f9f74a5c99b in dt_control_work_res (ptr=<optimized out>) at /home/sguyader/Sources/darktable-2.6.0/src/control/jobs.c:529
        old = 0
        tmp = 0
        params = <optimized out>
        s = 0x55eb0e7cc680
        name = "worker res 0\000\000\000"
        threadid_res = 0
#3  0x00007f9f748fea9d in start_thread () at /usr/lib/libpthread.so.0
#4  0x00007f9f7482eb23 in clone () at /usr/lib/libc.so.6

Thread 13 (Thread 0x7f9f537fe700 (LWP 2329)):
#0  0x00007f9f747fb6a8 in nanosleep () at /usr/lib/libc.so.6
#1  0x00007f9f747fb5ae in sleep () at /usr/lib/libc.so.6
#2  0x00007f9f74a5c58a in dt_control_worker_kicker (ptr=0x55eb0e7cc680) at /home/sguyader/Sources/darktable-2.6.0/src/control/jobs.c:544
        control = 0x55eb0e7cc680
#3  0x00007f9f748fea9d in start_thread () at /usr/lib/libpthread.so.0
#4  0x00007f9f7482eb23 in clone () at /usr/lib/libc.so.6

Thread 12 (Thread 0x7f9f53fff700 (LWP 2328)):
#0  0x00007f9f74904afc in pthread_cond_wait@@GLIBC_2.3.2 () at /usr/lib/libpthread.so.0
#1  0x00007f9f74a5dba6 in dt_pthread_cond_wait (mutex=0x55eb0e7cd180, cond=0x55eb0e7cd1d0) at /home/sguyader/Sources/darktable-2.6.0/src/common/dtpthread.h:327
        params = <optimized out>
        control = 0x55eb0e7cc680
        name = "worker 7\000\000\000\000\000\000\000"
#2  0x00007f9f74a5dba6 in dt_control_work (ptr=<optimized out>) at /home/sguyader/Sources/darktable-2.6.0/src/control/jobs.c:572
        params = <optimized out>
        control = 0x55eb0e7cc680
        name = "worker 7\000\000\000\000\000\000\000"
#3  0x00007f9f748fea9d in start_thread () at /usr/lib/libpthread.so.0
#4  0x00007f9f7482eb23 in clone () at /usr/lib/libc.so.6

Thread 11 (Thread 0x7f9f58bf9700 (LWP 2327)):
#0  0x00007f9f74904afc in pthread_cond_wait@@GLIBC_2.3.2 () at /usr/lib/libpthread.so.0
#1  0x00007f9f74a5dba6 in dt_pthread_cond_wait (mutex=0x55eb0e7cd180, cond=0x55eb0e7cd1d0) at /home/sguyader/Sources/darktable-2.6.0/src/common/dtpthread.h:327
        params = <optimized out>
        control = 0x55eb0e7cc680
        name = "worker 6\000\000\000\000\000\000\000"
#2  0x00007f9f74a5dba6 in dt_control_work (ptr=<optimized out>) at /home/sguyader/Sources/darktable-2.6.0/src/control/jobs.c:572
        params = <optimized out>
        control = 0x55eb0e7cc680
        name = "worker 6\000\000\000\000\000\000\000"
#3  0x00007f9f748fea9d in start_thread () at /usr/lib/libpthread.so.0
#4  0x00007f9f7482eb23 in clone () at /usr/lib/libc.so.6

Thread 10 (Thread 0x7f9f593fa700 (LWP 2326)):
#0  0x00007f9f74904afc in pthread_cond_wait@@GLIBC_2.3.2 () at /usr/lib/libpthread.so.0
#1  0x00007f9f74a5dba6 in dt_pthread_cond_wait (mutex=0x55eb0e7cd180, cond=0x55eb0e7cd1d0) at /home/sguyader/Sources/darktable-2.6.0/src/common/dtpthread.h:327
        params = <optimized out>
        control = 0x55eb0e7cc680
        name = "worker 5\000\000\000\000\000\000\000"
#2  0x00007f9f74a5dba6 in dt_control_work (ptr=<optimized out>) at /home/sguyader/Sources/darktable-2.6.0/src/control/jobs.c:572
        params = <optimized out>
        control = 0x55eb0e7cc680
        name = "worker 5\000\000\000\000\000\000\000"
#3  0x00007f9f748fea9d in start_thread () at /usr/lib/libpthread.so.0
#4  0x00007f9f7482eb23 in clone () at /usr/lib/libc.so.6

Thread 9 (Thread 0x7f9f59bfb700 (LWP 2325)):
#0  0x00007f9f74904afc in pthread_cond_wait@@GLIBC_2.3.2 () at /usr/lib/libpthread.so.0
#1  0x00007f9f74a5dba6 in dt_pthread_cond_wait (mutex=0x55eb0e7cd180, cond=0x55eb0e7cd1d0) at /home/sguyader/Sources/darktable-2.6.0/src/common/dtpthread.h:327
        params = <optimized out>
        control = 0x55eb0e7cc680
        name = "worker 4\000\000\000\000\000\000\000"
#2  0x00007f9f74a5dba6 in dt_control_work (ptr=<optimized out>) at /home/sguyader/Sources/darktable-2.6.0/src/control/jobs.c:572
        params = <optimized out>
        control = 0x55eb0e7cc680
        name = "worker 4\000\000\000\000\000\000\000"
#3  0x00007f9f748fea9d in start_thread () at /usr/lib/libpthread.so.0
#4  0x00007f9f7482eb23 in clone () at /usr/lib/libc.so.6

Thread 8 (Thread 0x7f9f5a3fc700 (LWP 2324)):
#0  0x00007f9f74904afc in pthread_cond_wait@@GLIBC_2.3.2 () at /usr/lib/libpthread.so.0
#1  0x00007f9f74a5dba6 in dt_pthread_cond_wait (mutex=0x55eb0e7cd180, cond=0x55eb0e7cd1d0) at /home/sguyader/Sources/darktable-2.6.0/src/common/dtpthread.h:327
        params = <optimized out>
        control = 0x55eb0e7cc680
        name = "worker 3\000\000\000\000\000\000\000"
#2  0x00007f9f74a5dba6 in dt_control_work (ptr=<optimized out>) at /home/sguyader/Sources/darktable-2.6.0/src/control/jobs.c:572
        params = <optimized out>
        control = 0x55eb0e7cc680
        name = "worker 3\000\000\000\000\000\000\000"
#3  0x00007f9f748fea9d in start_thread () at /usr/lib/libpthread.so.0
#4  0x00007f9f7482eb23 in clone () at /usr/lib/libc.so.6

Thread 7 (Thread 0x7f9f5abfd700 (LWP 2323)):
#0  0x00007f9f74904afc in pthread_cond_wait@@GLIBC_2.3.2 () at /usr/lib/libpthread.so.0
#1  0x00007f9f74a5dba6 in dt_pthread_cond_wait (mutex=0x55eb0e7cd180, cond=0x55eb0e7cd1d0) at /home/sguyader/Sources/darktable-2.6.0/src/common/dtpthread.h:327
        params = <optimized out>
        control = 0x55eb0e7cc680
        name = "worker 2\000\000\000\000\000\000\000"
#2  0x00007f9f74a5dba6 in dt_control_work (ptr=<optimized out>) at /home/sguyader/Sources/darktable-2.6.0/src/control/jobs.c:572
        params = <optimized out>
        control = 0x55eb0e7cc680
        name = "worker 2\000\000\000\000\000\000\000"
#3  0x00007f9f748fea9d in start_thread () at /usr/lib/libpthread.so.0
#4  0x00007f9f7482eb23 in clone () at /usr/lib/libc.so.6

Thread 6 (Thread 0x7f9f5b3fe700 (LWP 2322)):
#0  0x00007f9f74904afc in pthread_cond_wait@@GLIBC_2.3.2 () at /usr/lib/libpthread.so.0
#1  0x00007f9f74a5dba6 in dt_pthread_cond_wait (mutex=0x55eb0e7cd180, cond=0x55eb0e7cd1d0) at /home/sguyader/Sources/darktable-2.6.0/src/common/dtpthread.h:327
        params = <optimized out>
        control = 0x55eb0e7cc680
        name = "worker 1\000\000\000\000\000\000\000"
#2  0x00007f9f74a5dba6 in dt_control_work (ptr=<optimized out>) at /home/sguyader/Sources/darktable-2.6.0/src/control/jobs.c:572
        params = <optimized out>
        control = 0x55eb0e7cc680
        name = "worker 1\000\000\000\000\000\000\000"
#3  0x00007f9f748fea9d in start_thread () at /usr/lib/libpthread.so.0
#4  0x00007f9f7482eb23 in clone () at /usr/lib/libc.so.6

Thread 5 (Thread 0x7f9f5bbff700 (LWP 2321)):
#0  0x00007f9f74904afc in pthread_cond_wait@@GLIBC_2.3.2 () at /usr/lib/libpthread.so.0
#1  0x00007f9f74a5dba6 in dt_pthread_cond_wait (mutex=0x55eb0e7cd180, cond=0x55eb0e7cd1d0) at /home/sguyader/Sources/darktable-2.6.0/src/common/dtpthread.h:327
        params = <optimized out>
        control = 0x55eb0e7cc680
        name = "worker 0\000\000\000\000\000\000\000"
#2  0x00007f9f74a5dba6 in dt_control_work (ptr=<optimized out>) at /home/sguyader/Sources/darktable-2.6.0/src/control/jobs.c:572
        params = <optimized out>
        control = 0x55eb0e7cc680
        name = "worker 0\000\000\000\000\000\000\000"
#3  0x00007f9f748fea9d in start_thread () at /usr/lib/libpthread.so.0
#4  0x00007f9f7482eb23 in clone () at /usr/lib/libc.so.6

Thread 4 (Thread 0x7f9f694ac700 (LWP 2320)):
#0  0x00007f9f74823c21 in poll () at /usr/lib/libc.so.6
#1  0x00007f9f744c7ee0 in  () at /usr/lib/libglib-2.0.so.0
#2  0x00007f9f744c8f62 in g_main_loop_run () at /usr/lib/libglib-2.0.so.0
#3  0x00007f9f73925c28 in  () at /usr/lib/libgio-2.0.so.0
#4  0x00007f9f744913eb in  () at /usr/lib/libglib-2.0.so.0
#5  0x00007f9f748fea9d in start_thread () at /usr/lib/libpthread.so.0
#6  0x00007f9f7482eb23 in clone () at /usr/lib/libc.so.6

Thread 3 (Thread 0x7f9f69cad700 (LWP 2319)):
#0  0x00007f9f748294ed in syscall () at /usr/lib/libc.so.6
#1  0x00007f9f74476f61 in g_cond_wait_until () at /usr/lib/libglib-2.0.so.0
#2  0x00007f9f744f4cc3 in  () at /usr/lib/libglib-2.0.so.0
#3  0x00007f9f744f4ec3 in g_async_queue_timeout_pop () at /usr/lib/libglib-2.0.so.0
#4  0x00007f9f74498c7a in  () at /usr/lib/libglib-2.0.so.0
#5  0x00007f9f744913eb in  () at /usr/lib/libglib-2.0.so.0
#6  0x00007f9f748fea9d in start_thread () at /usr/lib/libpthread.so.0
#7  0x00007f9f7482eb23 in clone () at /usr/lib/libc.so.6

Thread 2 (Thread 0x7f9f6a4ae700 (LWP 2318)):
#0  0x00007f9f74823c21 in poll () at /usr/lib/libc.so.6
#1  0x00007f9f744c7ee0 in  () at /usr/lib/libglib-2.0.so.0
#2  0x00007f9f744c7fce in g_main_context_iteration () at /usr/lib/libglib-2.0.so.0
#3  0x00007f9f744c8022 in  () at /usr/lib/libglib-2.0.so.0
#4  0x00007f9f744913eb in  () at /usr/lib/libglib-2.0.so.0
#5  0x00007f9f748fea9d in start_thread () at /usr/lib/libpthread.so.0
#6  0x00007f9f7482eb23 in clone () at /usr/lib/libc.so.6

Thread 1 (Thread 0x7f9f6a7a4dc0 (LWP 2317)):
#0  0x00007f9f74908d42 in waitpid () at /usr/lib/libpthread.so.0
#1  0x00007f9f74a51b50 in _dt_sigsegv_handler (param=11) at /home/sguyader/Sources/darktable-2.6.0/src/common/system_signal_handling.c:118
        pid = 2334
        name_used = 0x55eb0ef417a0 "/tmp/darktable_bt_6G6NUZ.txt"
        fout = <optimized out>
        delete_file = 0
        datadir = "/opt/darktable/share/darktable", '\000' <repeats 4065 times>
        pid_arg = 0x55eb0ef44e00 "2317"
        comm_arg = 0x55eb0ef45280 "/opt/darktable/share/darktable/gdb_commands"
        log_arg = 0x55eb0ef452c0 "set logging on /tmp/darktable_bt_6G6NUZ.txt"
#2  0x00007f9f7476ae00 in <signal handler called> () at /usr/lib/libc.so.6
#3  0x00007f9f74cb4a85 in _dl_close () at /lib64/ld-linux-x86-64.so.2
#4  0x00007f9f7486af57 in _dl_catch_exception () at /usr/lib/libc.so.6
#5  0x00007f9f7486aff3 in _dl_catch_error () at /usr/lib/libc.so.6
#6  0x00007f9f713a38bf in  () at /usr/lib/libdl.so.2
#7  0x00007f9f713a3288 in dlclose () at /usr/lib/libdl.so.2
#8  0x00007f9f500f4e5f in  () at /opt/intel/opencl/libigdfcl.so
#9  0x00007f9f500f45ae in Create () at /opt/intel/opencl/libigdfcl.so
#10 0x00007f9f5068b152 in  () at /opt/intel/opencl/libigdrcl.so
#11 0x00007f9f5068b1d7 in  () at /opt/intel/opencl/libigdrcl.so
#12 0x00007f9f506825b7 in  () at /opt/intel/opencl/libigdrcl.so
#13 0x00007f9f50682dd1 in  () at /opt/intel/opencl/libigdrcl.so
#14 0x00007f9f50670104 in  () at /opt/intel/opencl/libigdrcl.so
#15 0x00007f9f505e28ed in  () at /opt/intel/opencl/libigdrcl.so
#16 0x00007f9f506563a9 in  () at /opt/intel/opencl/libigdrcl.so
#17 0x00007f9f74a40447 in dt_opencl_build_program (dev=dev@entry=0, prog=prog@entry=0, binname=binname@entry=0x7fffd95600b0 "/home/sguyader/.cache/darktable/cached_kernels_for_IntelRHDGraphics/demosaic_ppg.cl.bin", cachedir=cachedir@entry=0x7fffd955c0b0 "/home/sguyader/.cache/darktable/cached_kernels_for_IntelRHDGraphics", md5sum=md5sum@entry=0x7fffd955ac80 "a5513e7725ddd38908295672e1ada71e", loaded_cached=0) at /home/sguyader/Sources/darktable-2.6.0/src/common/opencl.c:1683
        cl = 0x55eb0eb97cd0
        program = 0x55eb0ef459e0
        err = <optimized out>
        build_status = 0
        build_log = <optimized out>
        ret_val_size = 0
#18 0x00007f9f74a418a4 in dt_opencl_device_init (cl=cl@entry=0x55eb0eb97cd0, dev=dev@entry=0, devices=devices@entry=0x55eb0e7dc900, k=k@entry=0, opencl_memory_requirement=opencl_memory_requirement@entry=768) at /home/sguyader/Sources/darktable-2.6.0/src/common/opencl.c:456
        prog = <optimized out>
        rd = 1
        end = <optimized out>
        programname = 0x55eb0ef45fe0 "demosaic_ppg.cl"
        programnumber = <optimized out>
        tokens = 0x55eb0ef459c0
        confline_pattern = <optimized out>
        loaded_cached = 0
        md5sum = "a5513e7725ddd38908295672e1ada71e"
        res = <optimized out>
        err = 0
        devid = 0x55eb0e959f60
        infostr = 0x55eb0e7dc940 "Intel(R) HD Graphics"
        infostr_size = 21
        cname = <optimized out>
        cname_size = <optimized out>
        options = 0x0
        vendor = 0x55eb0e7dc920 "Intel(R) Corporation"
        vendor_size = 21
        driverversion = 0x55eb0e7dc960 "r5.0.63503"
        driverversion_size = 11
        deviceversion = 0x55eb0e7dc980 "OpenCL 2.0 "
        deviceversion_size = 12
        infoint = 140736839657544
        infointtab = 0x0
        type = 4
        image_support = 1
        device_available = 1
        vendor_id = 32902
        little_endian = 1
        dtcache = "/home/sguyader/.cache/darktable", '\000' <repeats 4064 times>
        cachedir = "/home/sguyader/.cache/darktable/cached_kernels_for_IntelRHDGraphics", '\000' <repeats 4028 times>
        devname = "IntelRHDGraphics", '\000' <repeats 633 times>...
        tstart = <optimized out>
        tend = <optimized out>
        tdiff = <optimized out>
        len = <optimized out>
        j = <optimized out>
        dtpath = "/opt/darktable/share/darktable", '\000' <repeats 4065 times>
        filename = "/opt/darktable/share/darktable/kernels/demosaic_ppg.cl", '\000' <repeats 4041 times>
        confentry = "demosaic_ppg.cl          0\000h sign\000er. use int to ref it in the code.", '\000' <repeats 4027 times>
        binname = "/home/sguyader/.cache/darktable/cached_kernels_for_IntelRHDGraphics/demosaic_ppg.cl.bin", '\000' <repeats 4008 times>
        kerneldir = "/opt/darktable/share/darktable/kernels", '\000' <repeats 4057 times>
        escapedkerneldir = 0x0
        clincludes = {0x7f9f74c173dc "colorspace.cl", 0x7f9f74c173ea "common.h", 0x0, 0x0, 0x0}
        includemd5 = {0x55eb0ef45970 "b21159b2467c9f663d84075f46ce3071", 0x55eb0ef45fb0 "5b844f77931bbd249b04ad48e1dafcf5", 0x0, 0x0, 0x0}
        f = 0x55eb0e947d30
#19 0x00007f9f74a46608 in dt_opencl_init (cl=0x55eb0eb97cd0, exclude_opencl=<optimized out>, print_statistics=<optimized out>) at /home/sguyader/Sources/darktable-2.6.0/src/common/opencl.c:671
        res = <optimized out>
        k = 0
        str = <optimized out>
        locale = 0x55eb0eb9f970 "LC_CTYPE=en_US.utf8;LC_NUMERIC=en_US.UTF-8;LC_TIME=en_US.UTF-8;LC_COLLATE=en_US.utf8;LC_MONETARY=en_US.UTF-8;LC_MESSAGES=en_US.utf8;LC_PAPER=en_US.UTF-8;LC_NAME=en_US.UTF-8;LC_ADDRESS=en_US.UTF-8;LC_T"...
        handles = <optimized out>
        all_platforms = 0x7f9f600469b0
        all_num_devices = 0x55eb0e7aaa30
        opencl_memory_requirement = 768
        library = <optimized out>
        err = <optimized out>
        num_platforms = 1
        num_devices = <optimized out>
        devices = <optimized out>
        devs = <optimized out>
        dev = 0
#20 0x00007f9f749e706a in dt_init (argc=<optimized out>, argv=<optimized out>, init_gui=<optimized out>, load_data=<optimized out>, L=<optimized out>) at /home/sguyader/Sources/darktable-2.6.0/src/common/darktable.c:889
        start_wtime = <optimized out>
        sse2_supported = <optimized out>
        dbfilename_from_command = <optimized out>
        noiseprofiles_from_command = <optimized out>
        datadir_from_command = <optimized out>
        moduledir_from_command = <optimized out>
        localedir_from_command = <optimized out>
        tmpdir_from_command = <optimized out>
        configdir_from_command = <optimized out>
        cachedir_from_command = <optimized out>
        exclude_opencl = <optimized out>
        print_statistics = <optimized out>
        lua_command = <optimized out>
        config_override = <optimized out>
        datadir = "/home/sguyader/.config/darktable", '\000' <repeats 4063 times>
        darktablerc = "/home/sguyader/.config/darktable/darktablerc", '\000' <repeats 4051 times>
        changed_xmp_files = <optimized out>
#21 0x000055eb0e2c3076 in main (argc=<optimized out>, argv=<optimized out>) at /home/sguyader/Sources/darktable-2.6.0/src/main.c:82
[Inferior 1 (process 2317) detached]

uname -a:

Linux sg-lenovo 4.18.20-1-MANJARO #1 SMP PREEMPT Wed Nov 21 19:34:18 UTC 2018 x86_64 GNU/Linux

GCC 8.2.1
CMake 3.13.1

Capability to disable/hide hard-coded presets

Is your feature request related to a problem? Please describe.
Hard-coded presets cannot be removed. Lately, a lot of such presets have been added to the master branch that make the presets list of some iops lengthy, specially when someone has also a bunch of personal presets. I personally prefer my own presets and almost never use those hard-coded ones.

Describe the solution you'd like
Add capability to hide/disable hard-coded presets. I think the presets section of preferences is a good place for this feature, so that a user can selectively hide the presets (s)he doesn't use.

2.6.0 Win64 installer broken

When attempting to install, an error of "Unable to access path" is displayed to the user and the installer closes.

This happens when run as a normal user and as administrator.

OpenCL masking broken with last commits

With OpenCL on:

  • mask opacities on exposure module don't give the same result as same settings on SSE2/C codepaths. The OpenCL path gives softer results and low opacities (< 20 %) actually entirely disable the module. This is with mask feathering on, mask blur on, general opacity < 100%, parametric + drawn masks blending, key blending on luminance.
  • mask previews won't display at all. This sees to affect pretty much every IOP tested.

This affects master with commits from the 9th and 10th January. I haven't been able to bissect for now since git is rebasing in a weird fashion, so I get conflicts with the last changes on the lighttable UI and Cairo segfaults.

Ping @houz

lighttable make it event faster

We could make the lighttable even faster.

When some missing thumbs are detected we currently register a call to _expose_again() and
forcing expose.

We could register the image id that were missing and only expose them on the second round
instead of exposing everything.

Deprecate Tethering

This is a proposal to deprecate the tethering view.

Arguments:

  • Entangle does it all, it's FOSS, uses the same libgphoto and is more lightweight,
  • dt thethering lacks features (only basic camera controls & settings),
  • nobody maintains it (last features added 3 years ago, last bug corrected 2 years ago).

datetime showing week day in Slovenian instead of English

datetime shown in "image information" box, now is different in version 2.6.0 regarding what was shown in 2.4.4 (I use windows 7 Home 64 bits).

Just for reference, the language selected for the DT GUI (in both versions) is "English", while the locale in the computer is "Spanish".

In the example below, the week day was shown as Sat in 2.4.4 (it seems to be in english, which is OK), while in 2.6.0 is shown as sob (it seems to be Slovenian!) . The date format seems to be also different.
datetime
Is there any locale setting in windows that can be the cause of this behaviour? (I have not changed anything regarding the 2.4.4 version, but just in case ...)

shift+scroll problem on macos

Problem: On the current 2.6.0 macos builds, it's impossible to decrease the feather size when drawing shapes.

Steps to reproduce: Open a photo and go to the spot removal module. Select the circle or the oval tool and move the mouse over the photo. Shift+mouse wheel up increases feather size. Shift + mouse wheel down also increases feather size.

Desired behavior: Shift + mouse wheel down should decrease feather size.

This problem seems limited to macos and doesn't occur on the linux builds. I tried reversing the "natural" scrolling direction in system preferences but this had no effect. I'm running darktable 2.6.0 on macos mojave 10.14.2.

If there's a workaround for decreasing the feather size without using the mouse's scroll wheel, I'd be interested.

Thanks!

Not all languages are offered in interface language combo box

HI

when i installed darktable 2.6.0 from ppa:pmjdebruijn/darktable-release it was in czech because my system localization settings.

I then switched to english translation of darktable because i was trying to reproduce some steps from tutorial and i wasn't sure how to translate few things.

but when i wanted to switch it back i found that there is not entry for czech.

I use ubuntu 18.04

I tried install darktable on windows too and it was in english right away and also limited language selection

Broken "Find location" on Windows

Describe the bug
I just want to draw attention on a Windows bug described on Redmine: the "find location" feature is broken on Windows. It seems serious enough to have a totally broken feature on a new version build.

It is a Windows port issue, as the feature is working fine on Linux.

To Reproduce
Steps to reproduce the behavior:

  1. Go to 'map'
  2. Enter location
  3. Press 'Enter'

Expected behavior
A list of possible locations should appear.

Screenshots
If applicable, add screenshots to help explain your problem.

Platform (please complete the following information):

  • OS: Windows 10 64 bits.
  • Version 2.6.0

Equalizer (maybe?) add black square on picture when editing and export

Hello guys.
I updated darktable to 2.6 on my Archlinux (directly from official repo) and now I have a problem with the equalizer module.
I usualy apply the style "EQ+Denoise+HotP - Matt Eastwood" (you can found it on https://dtstyle.net/) on my high ISO picture to denoise it but since the last version, some "black square" are presents on the picture when I use this style : https://framapic.org/7x6tOxMTPuEV/MhcL4XAH5zY1.png
If I export this picture, the problem is still present.
Used camera : DMC G7 and RAW file. Tested with a RAW downloaded here and same result : http://www.mamiyaleaf.com/samples_credo_80.html

Exporting Olympus High Res Shot crash

Describe the bug
Since the update i can now open and edit High Res Mode Raw files from my Olympus OMD EM-5 Mark ii. I can also export them without making changes. But whenever i try to export them after making changes Darktable crashes.

To Reproduce
Steps to reproduce the behavior:

  1. Open Darktable
  2. Load 60 MP High Res File
  3. Activate Local Contrast Module for example
  4. Export Image

Expected behavior
Darktable calculates for some seconds and then closes without a message.

Screenshots
No Screenshot possible

Platform (please complete the following information):

  • OS: [Ubuntu 18.04]
  • Memory [8 GB]
  • Version [2.6.0]

Additional context
Is it possibly caused by running out of RAM or something similar?
I could send you the RAW files I used but I can't attach them here.

Merge gaussian blur libs

There are several gaussian blur libraries into darktable:

  1. the one used in local contrast laplacian (the most recent)
  2. the one used in low-pass and shadows-highlights
  3. the one used in sharpen
  4. the one used in basecurve exposure fusion
  5. maybe others I'm not aware of.

These libs have different performance footprints, since some have not been optimized with new SIMD instructions sets for some time. Because we have to manage 3 C/SSE2/OpenCL versions for each lib, and OpenCL will be deprecated anytime now for Vulkan (which has better perf anyway), it would be good to factorize these libs so there is only one to translate into Vulkan when the time comes.

Also, most of these libs assume Lab input space and blur only the first channel. It would be useful to have a more generic interface in case we need to blur 3 RGB channels, or just one arbitrary channel.

Finally, it could be worth is to add a FFT path for the convolution product for large blurs kernels (> 32 px). FFTW could be of some help here, even if its MIT license can raise issues with darktable's GPV v3.

Feature Request: fill (black) edges (eg useful after perspective correction)

Right now anything that does not exist cannot be drawn onto, so the perspective correction leaves a black shape that needs to be cropped along with the whole side, and it gets ignored in every operations (s.a. heal).

Often we don't want to crop that whole side out because that band happens to be where the most crucial part of the picture is (and the part that is missing is often simple low frequency stuff).

In these cases my workflow is to export the image and finish the inpainting in gimp/g'mic. It's pretty straightforward but I much prefer to do everything in darktable and click on export to Wikimedia Commons.

In "grouped" mode (RAW + jpg), selecting one image makes 2 images be selected

I think this is a new behavior with 2.6, but I'm not 100% sure. When I've got a folder full of pairs of RAW and JPEG images and the "G" (grouped) button is clicked, it used to be the case that selecting just one of them would mean that an export would export 1 image. However with 2.6 I notice that selecting one image causes the Lighttable view to say at the top that I've got two images selected, and an "export" operation claims that it's doing two exports. (Two separate export messages are logged to stdout at that point too.)

Shouldn't it only export 1 image (the processed RAW image) when I've only got one selected?

I'm on Ubuntu 18.04 for what that's worth; I just upgraded to 2.6 this afternoon.

Spanish language missing

Hi all,

I can't find spanish language under GUI options, in the interface language selector. Has spanish language no support or am I missing something? I'm in Fedora 29 with Darktable 2.6.0-2

raster mask not working

Describe the bug
The new raster mask is not working.

To Reproduce
Steps to reproduce the behavior:

  1. Open a picture
  2. On exposure IOP add a parametric mask to select a part of the image
  3. On the monochrome iop, select raster mask -> exposure
  4. The whole image is monochrome as if the mask is not there
  5. Invert the raster mask is nop

Expected behavior
On step 4 only the part selected in 2 should be affected.

Platform (please complete the following information):

  • OS: Linux Debian

Zoom beyond 200% does not respect a proper reference point

Describe the bug
For zoom-in by Ctrl+mouse wheel, the reference points of view for zoom levels higher than 200% is not the location of mouse pointer which makes user lose the location on the photo. In addition, when you zoom-in from 200% to 400% (by Ctrl+mouse wheel), then zoom-out to 200% without moving mouse, the view jumps to a new location other than initial view before zoom-in. The same thing also happens in 800% and 1600% zoom levels.

To Reproduce
Steps to reproduce the behavior:

  1. Zoom to 200%
  2. Move mouse pointer over a spot on the photo
  3. Zoom to 400% using Ctrl+mouse wheel (mouse pointer is no longer on that spot)
  4. Zoom-out to 200% using Ctrl+mouse without moving the mouse (still the pointer is not on the initial spot)

Expected behavior
Mouse pointer should point to a similar location on the photo when zoom level is changed

Platform (please complete the following information):

  • OS: Ubuntu 18.04
  • Version: git-master

Improve support for Wacom

Currently, darktable supports Wacom stylus pressure, but the buttons of the stylus and of the tablet cannot be assigned, and the gestures are not handled.

Basic gestures could be zoom, pan and scroll. Buttons could be used to define brush size, opacity and feathering.

Darktable 2.6 for windows hangs during image export when overall system resource utilization is medium-high

Describe the bug
Overall memory utilization is high (around 55%) in the desktop. After having applied certain modifications to imported raw images (.NEF) (losslessly of course), when a set of files are selected and set for export to JPEG, it stops processing at a certain point and the export process get stuck at that point.

To Reproduce
Steps to reproduce the behavior:

  1. Create a situation where overall memory utilization is high (say 60%)
  2. Import a set of RAW files and configure them for processing with a few tools
  3. Select few files and click on export (go with the default options)
  4. Memory/CPU utilization will rise further as files are processed (somewhere around 70% memory), processing stops with a random file (CPU usage comes down) requiring significant processing and the memory utilization will not come down
  5. Darktable does not close properly thereafter (task has to be killed from Task manager)

Expected behavior
The files get exported as JPEGs without issues. During the process, memory and CPU utilization may peak but it should come back to regular state as soon as the export is complete.

Alternatively if at all there is a memory/resource limitation issue, Darktable provides feedback to the user on the failure and enables the user to close it gracefully.

Screenshots
Not available.

Platform (please complete the following information):

  • OS: [Windows 10]
  • Version [Home edition]

Additional context
Add any other context about the problem here.

Darkroom history flooded by tiny modifications during manipulation of sliders in Darkroom modules

Darkroom, history gets swamped by any modification on modules

Working in Darkroom, on any module I believe (but only tried the most common: Exposure, Shadows/Highlights, Tone Curve, Local Contrast etc), for any small modifications of the input sliders the history gets another row added instead of waiting for the user to end his fine-tuning and accept the final value as the one to be added to History.

To Reproduce
Steps to reproduce the behavior:

  1. Go to Darkroom, activate Exposure
  2. Right MB click on the exposure EV slider to pop up the multi-functional control
  3. adjust the exposure with the mouse
  4. See History panel going crazy recording every tiniest movement of the mouse

Platform

  • OS: Ubuntu 18.10
  • Version: 2.7.0_git251.fff6ec3c5_a

Note
This issue only came up testing the very latest git compile (darktable_2.7.0_git251.fff6ec3c5_amd64.deb).

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.