...
 
Commits (71)
......@@ -52,8 +52,8 @@ RUN echo 'APT::Get::Assume-Yes "true";' > /etc/apt/apt.conf.d/80forceyes
# Fix broken packages
RUN echo 'APT::Get::Fix-Missing "true";' > /etc/apt/apt.conf.d/80fixmissin
ENV GCC_VER=7
ENV LLVM_VER=4.0
ENV GCC_VER=8
ENV LLVM_VER=6.0
# pls keep sorted :)
RUN rm -rf /var/lib/apt/lists/* && apt-get update && \
......
......@@ -50,21 +50,21 @@ matrix:
sudo: required
services:
- docker
env: CC=gcc-7 CXX=g++-7 TARGET=build
env: CC=gcc-8 CXX=g++-8 TARGET=build
#- os: osx
# env: CC=cc CXX=c++ TARGET=build # can't use CXX=g++ fails for osx.mm
- os: linux
sudo: required
services:
- docker
env: CC=clang-4.0 CXX=clang++-4.0 TARGET=build ECO="-DUSE_OPENMP=OFF -DUSE_OPENCL=OFF"
env: CC=clang-6.0 CXX=clang++-6.0 TARGET=build ECO="-DUSE_OPENMP=OFF -DUSE_OPENCL=OFF"
#- os: osx
# env: CC=gcc-7 CXX=c++ TARGET=build # can't use CXX=g++ fails for osx.mm
# env: CC=gcc-8 CXX=c++ TARGET=build # can't use CXX=g++ fails for osx.mm
- os: linux
sudo: required
services:
- docker
env: CC=gcc-7 CXX=g++-7 TARGET=usermanual # EXTRA_TMPFS="--tmpfs /tmp"
env: CC=gcc-8 CXX=g++-8 TARGET=usermanual # EXTRA_TMPFS="--tmpfs /tmp"
script:
- if [[ "$TRAVIS_OS_NAME" == "linux" ]]; then docker run --read-only --volume $TRAVIS_BUILD_DIR:$SRC_DIR:ro --tmpfs $BUILD_DIR --workdir $BUILD_DIR --tmpfs $INSTALL_PREFIX $EXTRA_TMPFS --env CC --env CXX --env CFLAGS --env CXXFLAGS --env SRC_DIR --env BUILD_DIR --env INSTALL_PREFIX --env TARGET --env ECO darktable/darktable sh -c "$SRC_DIR/.ci/ci-script.sh"; fi
......
......@@ -79,6 +79,7 @@ option(VALIDATE_APPDATA_FILE "Use appstream-util (if found) to validate the .app
option(BUILD_TESTS "Build tests in src/tests/, runnable from the build/ directory" OFF)
option(BUILD_BATTERY_INDICATOR "Add an icon to the top toolbar showing the state of a laptop battery" OFF)
option(BUILD_MSYS2_INSTALL "Build an MSYS2 version of the install, aka for Windows platform, but without dependency installs" OFF)
option(BUILD_NOISE_TOOLS "Build tools for generating noise proifles" OFF)
if(USE_OPENCL)
option(TESTBUILD_OPENCL_PROGRAMS "Test-compile opencl programs (needs llvm and clang 3.9+)" ON)
......@@ -219,7 +220,7 @@ else(DEFINED PROJECT_VERSION)
else(NOT SOURCE_PACKAGE)
if(NOT EXISTS ${CMAKE_SOURCE_DIR}/src/version_gen.c)
# should be expanded by git archive due to export-subst in .gitattributes
set(PROJECT_VERSION "archive-6305f8363de0e349f7947b701efb54e035ac0709")
set(PROJECT_VERSION "archive-ea14702cd2d866d29b6270d94d04127681cf2323")
# but was it expanded?
if(PROJECT_VERSION MATCHES Format)
set(PROJECT_VERSION "unknown-version")
......@@ -544,6 +545,7 @@ include(data/supported_extensions.cmake) # this file needs to be included first
add_subdirectory(src) # src/ needs to be before data/ so that the correct CSS file gets installed
add_subdirectory(data)
add_subdirectory(doc)
add_subdirectory(tools)
# This contains fixup_bundle
# And adding a separate subderectory as a last one will make sure
......
we’re proud to announce the second bugfix release for the 2.4 series of darktable, 2.4.2!
we’re proud to announce the fourth bugfix release for the 2.4 series of darktable, 2.4.4!
the github release is here: [https://github.com/darktable-org/darktable/releases/tag/release-2.4.2](https://github.com/darktable-org/darktable/releases/tag/release-2.4.2).
the github release is here: [https://github.com/darktable-org/darktable/releases/tag/release-2.4.4](https://github.com/darktable-org/darktable/releases/tag/release-2.4.4).
as always, please don't use the autogenerated tarball provided by github, but only our tar.xz. the checksums are:
```
$ sha256sum darktable-2.4.2.tar.xz
??? darktable-2.4.2.tar.xz
$ sha256sum darktable-2.4.2.dmg
??? darktable-2.4.2.dmg
$ sha256sum darktable-2.4.2-win64.exe
??? darktable-2.4.2-win64.exe
$ sha256sum darktable-2.4.2-win64.zip
??? darktable-2.4.2-win64.zip
$ sha256sum darktable-2.4.4.tar.xz
??? darktable-2.4.4.tar.xz
$ sha256sum darktable-2.4.4.dmg
??? darktable-2.4.4.dmg
$ sha256sum darktable-2.4.4-win64.exe
??? darktable-2.4.4-win64.exe
$ sha256sum darktable-2.4.4-win64.zip
??? darktable-2.4.4-win64.zip
```
when updating from the currently stable 2.2.x series, please bear in mind that your edits will be preserved during this process, but it will not be possible to downgrade from 2.4 to 2.2.x any more.
#### Important note: to make sure that darktable can keep on supporting the raw file format for your camera, *please* read [this post](https://discuss.pixls.us/t/raw-samples-wanted/5420?u=lebedevri) on how/what raw samples you can contribute to ensure that we have the *full* raw sample set for your camera under CC0 license!
and the changelog as compared to 2.4.1 can be found below.
and the changelog as compared to 2.4.3 can be found below.
## New Features
- Add presets to location search in map mode
- Add timestamps to the output of `-d` command line switches
- Add a compression level slider to the TIFF export module
- Add native binary NetPNM loading, without using GraphicsMagick
- Add a battery indicator for people running darktable on a laptop. This is not very portable code and disabled by default
- Allow to use /? to show the help message on Windows
- Added 50% zoom option in darkroom mode to the navigation dropdown
- perspective correction: usability improvement – allow setting the radius when (de)selecting lines
## Bugfixes
- Turn off smooth scrolling for X11/Quartz. That might help with oversensitive scrolling
- Fix reading and writing of TIFFs with non-ASCII filenames on Windows
- Ellipsize background job labels when too long
- Hard code D50 white point when exporting to OpenEXR
- Add tootips to the haze removal module
- Fix a crash when changing lenses while tethering
- Fix incorrect Atom CPU detection on Windows
- Revised performance configuration
- Don't overlay the colorbalance sliders on the left for a cleaner look
- Honor local copy in copy export format
- Make trashing of files on Windows silent
- Fix string termination override on memmove
- Fix a use after free and some memleaks
- Fix a crash in PDF export
- Fix the min color picker
- Don't hardcode '/' in OpenCL paths on Windows
## Camera support, compared to 2.4.1
- Fix selecting drives in the import dialog on Windows by bundling a patched glib
- Add some space between checkbox and label in color picker
- OpenCL: better readability of debug output on memory usage
- Levels: catch an edge case where float != int
- Fix the alignment in a tooltip in lens correction
- Local contrast: Reset strength slider to 120% when double clicked
- Drop unused clone masks when loading xmp files
- Remove all sub masks when clearing cloning masks
- darktable-cltest: do not print summary statistics on OpenCL usage
- Perspective correction: take aspect parameter into account when judging on neutral settings
- Haze removal: fix tiled processing
- Fix install on Windows due to GraphicsMagick's versioned filenames
- PPM: Handle byte order when loading files
- Fix #12165: Don't try to show dialog without gui
- Fix an out-of-bounds memory access
- Tools: Fix typo in darktable-gen-noiseprofile that made it unusable
- MacOS package: point gettext to correct localedir
## Camera support, compared to 2.4.2
#### Warning: support for Nikon NEF 'lossy after split' raws was unintentionally broken due to the lack of such samples. Please see [this post](https://discuss.pixls.us/t/nikon-a-specific-raw-sample-wanted/5483?u=lebedevri) for more details. If you have affected raws, please contribute samples!
### Base Support
### White Balance Presets
- Canon PowerShot G1 X Mark III
- Panasonic DMC-FZ2000 (3:2)
- Panasonic DMC-FZ2500 (3:2)
- Panasonic DMC-ZS100 (3:2)
- Sony DSC-RX0
- Sony DSC-RX10M4
- Sony ILCE-6500
### Noise Profiles
- Canon EOS 200D
- Canon EOS Kiss X9
- Canon EOS Rebel SL2
- Canon EOS 760D
- Canon EOS 8000D
- Canon EOS Rebel T6s
- Canon PowerShot G1 X Mark II
- Canon PowerShot G9 X
- Fujifilm X100F
- Nikon D850
- Panasonic DC-G9
- Panasonic DMC-GF6
- Panasonic DMC-LX10
- Panasonic DMC-LX15
- Panasonic DMC-LX9
- Panasonic DMC-TZ70
- Panasonic DMC-TZ71
- Panasonic DMC-ZS50
## Translations
- Dutch
- French
- Canon EOS 800D
- Canon EOS Kiss X9i
- Canon EOS Rebel T7i
- Nikon COOLPIX B700
- Nikon D5600
- Olympus TG-5
## Updated translations
- German
- Hungarian
- Italian
- Russian
......@@ -20,6 +20,6 @@ find_library(GIO_LIBRARY
)
# Set the include dir variables and the libraries and let libfind_process do the rest.
# NOTE: Singular variables for this library, plural for libraries this this lib depends on.
# NOTE: Singular variables for this library, plural for libraries this lib depends on.
libfind_process(GIO)
......@@ -34,7 +34,7 @@ find_library(Glib_LIBRARY
)
# Set the include dir variables and the libraries and let libfind_process do the rest.
# NOTE: Singular variables for this library, plural for libraries this this lib depends on.
# NOTE: Singular variables for this library, plural for libraries this lib depends on.
set(Glib_PROCESS_INCLUDES Glib_INCLUDE_DIR GlibConfig_INCLUDE_DIR)
set(Glib_PROCESS_LIBS Glib_LIBRARY)
libfind_process(Glib)
......@@ -24,7 +24,7 @@ find_library(JsonGlib_LIBRARY
)
# Set the include dir variables and the libraries and let libfind_process do the rest.
# NOTE: Singular variables for this library, plural for libraries this this lib depends on.
# NOTE: Singular variables for this library, plural for libraries this lib depends on.
set(JsonGlib_PROCESS_INCLUDES ${JsonGlib_INCLUDE_DIR})
set(JsonGlib_PROCESS_LIBS ${JsonGlib_LIBRARY})
libfind_process(JsonGlib)
......
......@@ -23,7 +23,7 @@ find_library(OpenJPEG_LIBRARY
)
# Set the include dir variables and the libraries and let libfind_process do the rest.
# NOTE: Singular variables for this library, plural for libraries this this lib depends on.
# NOTE: Singular variables for this library, plural for libraries this lib depends on.
set(OpenJPEG_PROCESS_INCLUDES OpenJPEG_INCLUDE_DIR)
set(OpenJPEG_PROCESS_LIBS OpenJPEG_LIBRARY)
libfind_process(OpenJPEG)
......@@ -24,7 +24,7 @@ elseif(Pugixml_INCLUDE_DIR)
endif()
# Set the include dir variables and the libraries and let libfind_process do the rest.
# NOTE: Singular variables for this library, plural for libraries this this lib depends on.
# NOTE: Singular variables for this library, plural for libraries this lib depends on.
set(Pugixml_PROCESS_INCLUDES Pugixml_INCLUDE_DIR)
set(Pugixml_PROCESS_LIBS Pugixml_LIBRARY)
libfind_process(Pugixml)
......@@ -17,7 +17,7 @@ if (Sqlite3_PKGCONF_VERSION)
endif()
# Set the include dir variables and the libraries and let libfind_process do the rest.
# NOTE: Singular variables for this library, plural for libraries this this lib depends on.
# NOTE: Singular variables for this library, plural for libraries this lib depends on.
set(Sqlite3_PROCESS_INCLUDES Sqlite3_INCLUDE_DIR)
set(Sqlite3_PROCESS_LIBS Sqlite3_LIBRARY)
libfind_process(Sqlite3)
......@@ -160,8 +160,8 @@ if (WIN32 AND NOT BUILD_MSYS2_INSTALL)
# Add GraphicsMagick libraries
install(DIRECTORY
"${MINGW_PATH}/../lib/GraphicsMagick-1.3.28/modules-Q8/coders"
DESTINATION lib/GraphicsMagick-1.3.28/modules-Q8/
"${MINGW_PATH}/../lib/GraphicsMagick-1.3.29/modules-Q8/coders"
DESTINATION lib/GraphicsMagick-1.3.29/modules-Q8/
COMPONENT DTApplication
FILES_MATCHING PATTERN "*"
PATTERN "*.a" EXCLUDE
......
......@@ -128,6 +128,12 @@ button:checked
background-color: shade(@selected_bg_color, 1.4);
}
#lib-plugin-ui checkbutton *,
#iop-plugin-ui checkbutton *
{
margin-right:4pt;
}
/* frame around plugin boxes */
#iop-plugin-ui
{
......
......@@ -1615,6 +1615,13 @@
<shortdescription/>
<longdescription/>
</dtconfig>
<dtconfig>
<name>plugins/darkroom/ashift/near_delta</name>
<type>float</type>
<default>20.0</default>
<shortdescription/>
<longdescription/>
</dtconfig>
<dtconfig>
<name>plugins/print/print/black_point_compensation</name>
<type>bool</type>
......
This diff is collapsed.
......@@ -50,7 +50,7 @@
"type": "string",
"pattern": "^[a-zA-Z0-9\\- \\*]+$",
"minLength": 2,
"maxLength": 22
"maxLength": 23
},
"profiles": {
"type": "array",
......@@ -60,14 +60,14 @@
"properties": {
"name": {
"type": "string",
"pattern": "^[a-zA-Z0-9\\- \\*]+ iso [0-9]{2,6}$",
"pattern": "^[a-zA-Z0-9\\- \\*]+ iso [0-9]{2,7}$",
"minLength": 9,
"maxLength": 32
"maxLength": 33
},
"iso": {
"type": "integer",
"minimum": 31,
"maximum": 256000
"maximum": 2048000
},
"a": {
"type": "array",
......
......@@ -23,7 +23,7 @@ How to make disk image with darktable application bundle (64 bit Intel only):
$ portindex ~/ports
Add "file:///Users/<username>/ports" (change <username> to your actual login) to /opt/local/etc/macports/sources.conf before [default] line.
Install required dependencies:
$ sudo port install git exiv2 libgphoto2 gtk-osx-application-gtk3 lensfun librsvg libsoup openexr json-glib flickcurl GraphicsMagick openjpeg lua webp libsecret pugixml osm-gps-map adwaita-icon-theme tango-icon-theme intltool
$ sudo port install git exiv2 libgphoto2 gtk-osx-application-gtk3 lensfun librsvg libsoup openexr json-glib flickcurl GraphicsMagick openjpeg lua webp libsecret pugixml osm-gps-map adwaita-icon-theme tango-icon-theme intltool iso-codes
To have working OpenMP (at least partly, only for C source files) you will also need gcc6:
$ sudo port install gcc6
(llvm port, which gets installed as dependency, won't compile with macosx_deployment_target set, so comment it out when llvm is built)
......
......@@ -159,4 +159,4 @@ for arg in "$@"; do
done
unset arg
exec $GTK_DEBUG_GDB "$bundle_contents"/MacOS/"$name"-bin "$@" $SPLIT_ARGS --datadir "$bundle_data"/darktable --moduledir "$bundle_lib"/darktable --localedir "$bundle_data"/locale $EXTRA_ARGS
exec $GTK_DEBUG_GDB "$bundle_contents"/MacOS/"$name"-bin "$@" $SPLIT_ARGS $EXTRA_ARGS
......@@ -22,6 +22,7 @@
<binary>${prefix}/lib/${gtkdir}/${pkg:${gtk}:gtk_binary_version}/immodules/*.so</binary>
<binary>${prefix}/lib/gdk-pixbuf-2.0/${pkg:gdk-pixbuf-2.0:gdk_pixbuf_binary_version}/loaders/*.so</binary>
<translations name="gtk30">${prefix}/share/locale</translations>
<translations name="iso_639">${prefix}/share/locale</translations>
<translations name="darktable">${prefix:dt}/share/locale</translations>
<data>${prefix:dt}/share/darktable</data>
<data>${prefix}/share/glib-2.0/schemas/org.gtk.Settings.*.gschema.xml</data>
......@@ -30,6 +31,7 @@
<data dest="${bundle}/Contents/Resources/etc/gtk-3.0/settings.ini">${project}/settings.ini</data>
<data>${prefix}/share/mime</data>
<data>${prefix}/share/curl/curl-ca-bundle.crt</data>
<data>${prefix}/share/iso-codes/json/iso_639-2.json</data>
<data dest="${bundle}/Contents/Resources/Icons.icns">${project}/Icons.icns</data>
<data dest="${bundle}/Contents/Resources/share/applications/defaults.list">${project}/defaults.list</data>
<data dest="${bundle}/Contents/Resources/share/applications/open.desktop">${project}/open.desktop</data>
......
......@@ -151,4 +151,4 @@ if expr "$1" : '^-psn_' > /dev/null; then
shift 1
fi
exec $GTK_DEBUG_GDB "$bundle_contents"/MacOS/"$name"-bin --datadir "$bundle_data"/darktable --moduledir "$bundle_lib"/darktable --localedir "$bundle_data"/locale $EXTRA_ARGS "$@"
exec $GTK_DEBUG_GDB "$bundle_contents"/MacOS/"$name"-bin $EXTRA_ARGS "$@"
This diff is collapsed.
This diff is collapsed.
......@@ -34,13 +34,13 @@
#include <stdlib.h>
#include <string.h>
#define DT_BAUHAUS_WIDGET_TYPE (dt_bh_get_type())
#define DT_BAUHAUS_WIDGET(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj), DT_BAUHAUS_WIDGET_TYPE, DtBauhausWidget))
#define DT_BAUHAUS_WIDGET_CLASS(obj) (G_TYPE_CHECK_CLASS_CAST((obj), DT_BAUHAUS_WIDGET, DtBauhausWidgetClass))
#define DT_IS_BAUHAUS_WIDGET(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj), DT_BAUHAUS_WIDGET_TYPE))
#define DT_IS_BAUHAUS_WIDGET_CLASS(obj) (G_TYPE_CHECK_CLASS_TYPE((obj), DT_BAUHAUS_WIDGET_TYPE))
#define DT_BAUHAUS_WIDGET_TYPE dt_bh_get_type()
#define DT_BAUHAUS_WIDGET(obj) G_TYPE_CHECK_INSTANCE_CAST((obj), DT_BAUHAUS_WIDGET_TYPE, DtBauhausWidget)
#define DT_BAUHAUS_WIDGET_CLASS(obj) G_TYPE_CHECK_CLASS_CAST((obj), DT_BAUHAUS_WIDGET, DtBauhausWidgetClass)
#define DT_IS_BAUHAUS_WIDGET(obj) G_TYPE_CHECK_INSTANCE_TYPE((obj), DT_BAUHAUS_WIDGET_TYPE)
#define DT_IS_BAUHAUS_WIDGET_CLASS(obj) G_TYPE_CHECK_CLASS_TYPE((obj), DT_BAUHAUS_WIDGET_TYPE)
#define DT_BAUHAUS_WIDGET_GET_CLASS \
(G_TYPE_INSTANCE_GET_CLASS((obj), DT_BAUHAUS_WIDGET_TYPE, DtBauhausWidgetClass))
G_TYPE_INSTANCE_GET_CLASS((obj), DT_BAUHAUS_WIDGET_TYPE, DtBauhausWidgetClass)
extern GType DT_BAUHAUS_WIDGET_TYPE;
......
......@@ -685,7 +685,7 @@ static gint _compare_camera_by_port(gconstpointer a, gconstpointer b)
{
dt_camera_t *ca = (dt_camera_t *)a;
dt_camera_t *cb = (dt_camera_t *)b;
return strcmp(ca->port, cb->port);
return g_strcmp0(ca->port, cb->port);
}
void dt_camctl_detect_cameras(const dt_camctl_t *c)
......@@ -722,10 +722,10 @@ void dt_camctl_detect_cameras(const dt_camctl_t *c)
dt_pthread_mutex_init(&camera->live_view_pixbuf_mutex, NULL);
dt_pthread_mutex_init(&camera->live_view_synch, NULL);
// if(strcmp(camera->port,"usb:")==0) { g_free(camera); continue; }
// if(g_strcmp0(camera->port,"usb:")==0) { g_free(camera); continue; }
GList *citem;
if((citem = g_list_find_custom(c->cameras, camera, _compare_camera_by_port)) == NULL
|| strcmp(((dt_camera_t *)citem->data)->model, camera->model) != 0)
|| g_strcmp0(((dt_camera_t *)citem->data)->model, camera->model) != 0)
{
if(citem == NULL)
{
......@@ -1571,7 +1571,7 @@ static void _camera_configuration_notify_change(const dt_camctl_t *c, const dt_c
else
if(gp_widget_get_value(old_config_child, &old_config_value) != GP_OK) goto end;
if(strcmp(new_config_value, old_config_value) != 0)
if(g_strcmp0(new_config_value, old_config_value) != 0)
_dispatch_camera_property_value_changed(c, camera, new_config_name, new_config_value);
end:
......
......@@ -914,7 +914,7 @@ static gchar *get_query_string(const dt_collection_properties_t property, const
break;
case DT_COLLECTION_PROP_TAG: // tag
query = dt_util_dstrcat(query, "(id IN (SELECT imgid FROM main.tagged_images AS a JOIN "
"data.tags AS b ON a.tagid = b.id WHERE name LIKE '%1$s' OR name like '%1$s|%%'))",
"data.tags AS b ON a.tagid = b.id WHERE name LIKE '%s'))",
escaped_text);
break;
......
......@@ -440,13 +440,14 @@ int dt_init(int argc, char *argv[], const gboolean init_gui, const gboolean load
char *noiseprofiles_from_command = NULL;
char *datadir_from_command = NULL;
char *moduledir_from_command = NULL;
char *localedir_from_command = NULL;
char *tmpdir_from_command = NULL;
char *configdir_from_command = NULL;
char *cachedir_from_command = NULL;
#ifdef HAVE_OPENCL
gboolean exclude_opencl = FALSE;
gboolean print_statistics = strcmp(argv[0], "darktable-cltest");
gboolean print_statistics = (strstr(argv[0], "darktable-cltest") == NULL);
#endif
#ifdef USE_LUA
......@@ -587,7 +588,8 @@ int dt_init(int argc, char *argv[], const gboolean init_gui, const gboolean load
}
else if(!strcmp(argv[k], "--localedir") && argc > k + 1)
{
bindtextdomain(GETTEXT_PACKAGE, argv[++k]);
localedir_from_command = argv[++k];
bindtextdomain(GETTEXT_PACKAGE, localedir_from_command);
argv[k-1] = NULL;
argv[k] = NULL;
}
......@@ -731,6 +733,7 @@ int dt_init(int argc, char *argv[], const gboolean init_gui, const gboolean load
#endif
dt_loc_init_datadir(datadir_from_command);
dt_loc_init_plugindir(moduledir_from_command);
dt_loc_init_localedir(localedir_from_command);
if(dt_loc_init_tmp_dir(tmpdir_from_command))
{
fprintf(stderr, "error: invalid temporary directory: %s\n", darktable.tmpdir);
......@@ -768,27 +771,27 @@ int dt_init(int argc, char *argv[], const gboolean init_gui, const gboolean load
gdk_set_allowed_backends("x11,*");
#endif
gtk_init(&argc, &argv);
}
// execute a performance check and configuration if needed
int last_configure_version = dt_conf_get_int("performance_configuration_version_completed");
if(last_configure_version < DT_CURRENT_PERFORMANCE_CONFIGURE_VERSION)
{
// ask the user whether he/she would like
// dt to make changes in the settings
gboolean run_configure = dt_gui_show_standalone_yes_no_dialog(
_("darktable - run performance configuration?"),
_("we have an updated performance configuration logic - executing that might improve the performance of "
"darktable.\nthis will potentially overwrite some of your existing settings - especially in case you "
"have manually modified them to custom values.\nwould you like to execute this update of the "
"performance configuration?\n"),
_("no"), _("yes"));
if(run_configure)
dt_configure_performance();
else
// make sure to set this, otherwise the user will be nagged until he eventually agrees
dt_conf_set_int("performance_configuration_version_completed", DT_CURRENT_PERFORMANCE_CONFIGURE_VERSION);
// execute a performance check and configuration if needed
int last_configure_version = dt_conf_get_int("performance_configuration_version_completed");
if(last_configure_version < DT_CURRENT_PERFORMANCE_CONFIGURE_VERSION)
{
// ask the user whether he/she would like
// dt to make changes in the settings
gboolean run_configure = dt_gui_show_standalone_yes_no_dialog(
_("darktable - run performance configuration?"),
_("we have an updated performance configuration logic - executing that might improve the performance of "
"darktable.\nthis will potentially overwrite some of your existing settings - especially in case you "
"have manually modified them to custom values.\nwould you like to execute this update of the "
"performance configuration?\n"),
_("no"), _("yes"));
if(run_configure)
dt_configure_performance();
else
// make sure to set this, otherwise the user will be nagged until he eventually agrees
dt_conf_set_int("performance_configuration_version_completed", DT_CURRENT_PERFORMANCE_CONFIGURE_VERSION);
}
}
// detect cpu features and decide which codepaths to enable
......
......@@ -230,6 +230,7 @@ typedef struct darktable_t
char *progname;
char *datadir;
char *plugindir;
char *localedir;
char *tmpdir;
char *configdir;
char *cachedir;
......
This diff is collapsed.
......@@ -30,6 +30,10 @@
#include <config.h>
#endif
#ifdef __APPLE__
#include "osx/osx.h"
#endif
#include "darktable.h"
#include "file_location.h"
......@@ -93,44 +97,17 @@ void dt_loc_init_user_config_dir(const char *configdir)
g_free(default_config_dir);
}
#if defined(__MACH__) || defined(__APPLE__)
#ifdef __APPLE__
char *dt_loc_find_install_dir(const char *suffix, const char *searchname)
{
gchar *curr = g_get_current_dir();
int contains = 0;
char tmp[PATH_MAX] = { 0 };
for(int k = 0; searchname[k] != 0; k++)
if(searchname[k] == '/')
{
contains = 1;
break;
}
if(searchname[0] == '/') // absolute path
snprintf(tmp, sizeof(tmp), "%s", searchname);
else if(contains) // relative path
snprintf(tmp, sizeof(tmp), "%s/%s", curr, searchname);
else
{
// no idea where we have been called. use compiled in path
g_free(curr);
return NULL;
}
size_t len = MIN(strlen(tmp), sizeof(tmp));
char *t = tmp + len; // strip off bin/darktable
for(; t > tmp && *t != '/'; t--)
;
t--;
if(*t == '.' && *(t - 1) != '.')
{
for(; t > tmp && *t != '/'; t--)
;
t--;
}
for(; t > tmp && *t != '/'; t--)
;
g_strlcpy(t, suffix, sizeof(tmp) - (t - tmp));
g_free(curr);
return g_strdup(tmp);
char *result = NULL;
char *res_path = dt_osx_get_bundle_res_path();
if(res_path)
result = g_build_filename(res_path, suffix, NULL);
g_free(res_path);
return result;
}
#elif defined(_WIN32)
char *dt_loc_find_install_dir(const char *suffix, const char *searchname)
......@@ -152,8 +129,9 @@ char *dt_loc_find_install_dir(const char *suffix, const char *searchname)
*slash = '\0';
finaldir = g_build_filename(runtime_prefix, suffix, NULL);
g_free(runtime_prefix);
return g_strdup(finaldir);
return finaldir;
}
#endif
......@@ -173,37 +151,42 @@ void dt_loc_init_user_cache_dir(const char *cachedir)
void dt_loc_init_plugindir(const char *plugindir)
{
#if defined(__MACH__) || defined(__APPLE__) || defined(_WIN32)
#if defined(__APPLE__) || defined(_WIN32)
char *suffix = g_build_filename("lib", "darktable", NULL);
char *directory = dt_loc_find_install_dir(suffix, darktable.progname);
g_free(suffix);
if(plugindir || !directory)
{
darktable.plugindir = dt_loc_init_generic(plugindir, DARKTABLE_LIBDIR);
}
else
{
darktable.plugindir = directory;
}
darktable.plugindir = dt_loc_init_generic(plugindir, directory ? directory : DARKTABLE_LIBDIR);
g_free(directory);
#else
darktable.plugindir = dt_loc_init_generic(plugindir, DARKTABLE_LIBDIR);
#endif
}
void dt_loc_init_localedir(const char *localedir)
{
#if defined(__APPLE__) || defined(_WIN32)
char *suffix = g_build_filename("share", "locale", NULL);
char *directory = dt_loc_find_install_dir(suffix, darktable.progname);
g_free(suffix);
darktable.localedir = dt_loc_init_generic(localedir, directory ? directory : DARKTABLE_LOCALEDIR);
#ifdef __APPLE__
if(directory && !localedir) //bind to bundle path
bindtextdomain(GETTEXT_PACKAGE, darktable.localedir);
#endif
g_free(directory);
#else
darktable.localedir = dt_loc_init_generic(localedir, DARKTABLE_LOCALEDIR);
#endif
}
void dt_loc_init_datadir(const char *datadir)
{
#if defined(__MACH__) || defined(__APPLE__) || defined(_WIN32)
#if defined(__APPLE__) || defined(_WIN32)
char *suffix = g_build_filename("share", "darktable", NULL);
char *directory = dt_loc_find_install_dir(suffix, darktable.progname);
g_free(suffix);
if(datadir || !directory)
{
darktable.datadir = dt_loc_init_generic(datadir, DARKTABLE_DATADIR);
}
else
{
darktable.datadir = directory;
}
darktable.datadir = dt_loc_init_generic(datadir, directory ? directory : DARKTABLE_DATADIR);
g_free(directory);
#else
darktable.datadir = dt_loc_init_generic(datadir, DARKTABLE_DATADIR);
#endif
......@@ -215,6 +198,11 @@ void dt_loc_get_plugindir(char *plugindir, size_t bufsize)
snprintf(plugindir, bufsize, "%s", darktable.plugindir);
}
void dt_loc_get_localedir(char *localedir, size_t bufsize)
{
snprintf(localedir, bufsize, "%s", darktable.localedir);
}
void dt_loc_get_user_config_dir(char *configdir, size_t bufsize)
{
snprintf(configdir, bufsize, "%s", darktable.configdir);
......
......@@ -28,6 +28,8 @@ gchar *dt_loc_get_home_dir(const gchar *user);
void dt_loc_init_datadir(const char *datadir);
/** get the plugin dir */
void dt_loc_init_plugindir(const char *plugindir);
/** init the locale dir */
void dt_loc_init_localedir(const char *localedir);
/** get user local dir */
int dt_loc_init_tmp_dir(const char *tmpdir);
/** get user config dir */
......@@ -38,6 +40,7 @@ void dt_loc_init_user_cache_dir(const char *cachedir);
/* temporary backward_compatibility*/
void dt_loc_get_datadir(char *datadir, size_t bufsize);
void dt_loc_get_plugindir(char *plugindir, size_t bufsize);
void dt_loc_get_localedir(char *localedir, size_t bufsize);
void dt_loc_get_tmp_dir(char *tmpdir, size_t bufsize);
void dt_loc_get_user_config_dir(char *configdir, size_t bufsize);
void dt_loc_get_user_cache_dir(char *cachedir, size_t bufsize);
......
......@@ -429,17 +429,23 @@ static const uint8_t _imageio_ldr_magic[] = {
gboolean dt_imageio_is_ldr(const char *filename)
{
size_t offset = 0;
uint8_t block[16] = { 0 };
uint8_t block[32] = { 0 }; // keep this big enough for whatever magic size we want to compare to!
FILE *fin = g_fopen(filename, "rb");
if(fin)
{
/* read block from file */
size_t s = fread(block, 16, 1, fin);
size_t s = fread(block, sizeof(block), 1, fin);
fclose(fin);
/* compare magic's */
while(s)
{
if(_imageio_ldr_magic[offset + 2] > sizeof(block)
|| offset + 3 + _imageio_ldr_magic[offset + 2] > sizeof(_imageio_ldr_magic))
{
fprintf(stderr, "error: buffer in %s is too small!\n", __FUNCTION__);
return FALSE;
}
if(memcmp(_imageio_ldr_magic + offset + 3, block + _imageio_ldr_magic[offset + 1],
_imageio_ldr_magic[offset + 2]) == 0)
{
......
......@@ -172,7 +172,11 @@ static dt_imageio_retval_t _read_ppm(dt_image_t *img, FILE*f, float *buf)
{
for(int c = 0; c < 3; c++)
{
float value = (float)line[x * 3 + c] / (float)max;
uint16_t intvalue = line[x * 3 + c];
// PPM files are big endian! http://netpbm.sourceforge.net/doc/ppm.html
if(G_BYTE_ORDER != G_BIG_ENDIAN)
intvalue = GUINT16_SWAP_LE_BE(intvalue);
float value = (float)intvalue / (float)max;
*buf_iter++ = value;
}
*buf_iter++ = 0.0;
......
......@@ -861,7 +861,7 @@ float dt_interpolation_compute_sample(const struct dt_interpolation *itor, const
}
else
{
// invalide coordinate
// invalid coordinate
r = 0.0f;
}
return r;
......
......@@ -23,6 +23,10 @@
#include <gtk/gtk.h>
#include <json-glib/json-glib.h>
#ifdef __APPLE__
#include "osx/osx.h"
#endif
#ifdef _WIN32
#include "win/dtwin.h"
#include <windows.h>
......@@ -64,13 +68,22 @@ static void get_language_names(GList *languages)
JsonReader *reader = NULL;
JsonParser *parser = NULL;
GError *error = NULL;
char *filename;
#ifdef __APPLE__
char *res_path = dt_osx_get_bundle_res_path();
#endif
#if defined(_WIN32) && !defined(MSYS2_INSTALL) // TODO: add osx?
#if defined(_WIN32) && !defined(MSYS2_INSTALL)
char datadir[PATH_MAX] = { 0 };
dt_loc_get_datadir(datadir, sizeof(datadir));
char *filename = g_build_filename(datadir, "..", "iso-codes", "json", "iso_639-2.json", NULL);
filename = g_build_filename(datadir, "..", "iso-codes", "json", "iso_639-2.json", NULL);
#else
char *filename = g_build_filename(ISO_CODES_LOCATION, "iso_639-2.json", NULL);
#ifdef __APPLE__
if(res_path)
filename = g_build_filename(res_path, "share", "iso-codes", "json", "iso_639-2.json", NULL);
else
#endif
filename = g_build_filename(ISO_CODES_LOCATION, "iso_639-2.json", NULL);
#endif
if(!g_file_test(filename, G_FILE_TEST_EXISTS))
......@@ -80,12 +93,21 @@ static void get_language_names(GList *languages)
goto end;
}
#if defined(_WIN32) && !defined(MSYS2_INSTALL) // TODO: add osx?
#if defined(_WIN32) && !defined(MSYS2_INSTALL)
// on windows we are shipping the translations of iso-codes along ours
char *localedir = g_build_filename(datadir, "..", "locale", NULL);
char localedir[PATH_MAX] = { 0 };
dt_loc_get_localedir(localedir, sizeof(localedir));
bindtextdomain("iso_639", localedir);
g_free(localedir);
#else
#ifdef __APPLE__
if(res_path)
{
char localedir[PATH_MAX] = { 0 };
dt_loc_get_localedir(localedir, sizeof(localedir));
bindtextdomain("iso_639", localedir);
}
else
#endif
bindtextdomain("iso_639", ISO_CODES_LOCALEDIR);
#endif
......@@ -199,6 +221,9 @@ static void get_language_names(GList *languages)
end:
// cleanup
#ifdef __APPLE__
g_free(res_path);
#endif
g_free(filename);
if(error) g_error_free(error);
if(reader) g_object_unref(reader);
......@@ -252,13 +277,8 @@ dt_l10n_t *dt_l10n_init(gboolean init_list)
const gchar * const * default_languages = g_get_language_names();
#ifdef _WIN32
char datadir[PATH_MAX] = { 0 };
dt_loc_get_datadir(datadir, sizeof(datadir));
char *localedir = g_build_filename(datadir, "..", "locale", NULL);
#else
char * localedir = g_strdup(DARKTABLE_LOCALEDIR);
#endif
char localedir[PATH_MAX] = { 0 };
dt_loc_get_localedir(localedir, sizeof(localedir));
GDir *dir = g_dir_open(localedir, 0, NULL);
if(dir)
{
......@@ -333,8 +353,6 @@ dt_l10n_t *dt_l10n_init(gboolean init_list)
if(selected == NULL)
result->selected = result->sys_default;
g_free(localedir);
}
else
set_locale(ui_lang, old_env);
......
......@@ -831,8 +831,8 @@ void dt_opencl_cleanup(dt_opencl_t *cl)
if(cl->print_statistics && (darktable.unmuted & DT_DEBUG_MEMORY))
{
dt_print(DT_DEBUG_OPENCL, "[opencl_summary_statistics] device '%s' (%d): peak memory usage %zu bytes\n",
cl->dev[i].name, i, cl->dev[i].peak_memory);
dt_print(DT_DEBUG_OPENCL, "[opencl_summary_statistics] device '%s' (%d): peak memory usage %zu bytes (%.1f MB)\n",
cl->dev[i].name, i, cl->dev[i].peak_memory, (float)cl->dev[i].peak_memory/(1024*1024));
}
if(cl->print_statistics && cl->use_events)
......@@ -1382,7 +1382,7 @@ int dt_opencl_lock_device(const int pipetype)
while(*prio != -1)
{
if(!dt_pthread_mutex_trylock(&cl->dev[*prio].lock))
if(!dt_pthread_mutex_BAD_trylock(&cl->dev[*prio].lock))
{
int devid = *prio;
free(priority);
......@@ -1406,7 +1406,7 @@ int dt_opencl_lock_device(const int pipetype)
for(int try_dev = 0; try_dev < cl->num_devs; try_dev++)
{
// get first currently unused processor
if(!dt_pthread_mutex_trylock(&cl->dev[try_dev].lock)) return try_dev;
if(!dt_pthread_mutex_BAD_trylock(&cl->dev[try_dev].lock)) return try_dev;
}
}
......@@ -2327,7 +2327,8 @@ void dt_opencl_memory_statistics(int devid, cl_mem mem, dt_opencl_memory_t actio
if(darktable.unmuted & DT_DEBUG_MEMORY)
dt_print(DT_DEBUG_OPENCL,
"[opencl memory] device %d: %zu bytes in use\n", devid, darktable.opencl->dev[devid].memory_in_use);
"[opencl memory] device %d: %zu bytes (%.1f MB) in use\n", devid, darktable.opencl->dev[devid].memory_in_use,
(float)darktable.opencl->dev[devid].memory_in_use/(1024*1024));
}
/** check if image size fit into limits given by OpenCL runtime */
......
......@@ -3,7 +3,7 @@
#if !defined(_RELEASE) && !defined(__cplusplus) && !defined(_WIN32)
//
// We needed to poison certaion functions in order to disallow their usage
// We needed to poison certain functions in order to disallow their usage
// but not in bundled libs
//
......
......@@ -115,7 +115,7 @@ static _masks_undo_data_t *_create_snapshot(GList *forms, dt_masks_form_t *form,
return data;
}
void _masks_free_undo(gpointer data)
static void _masks_free_undo(gpointer data)
{
_masks_undo_data_t *udata = (_masks_undo_data_t *)data;
......@@ -125,7 +125,7 @@ void _masks_free_undo(gpointer data)
free(udata);
}
void _masks_do_undo(gpointer user_data, dt_undo_type_t type, dt_undo_data_t *item)
static void _masks_do_undo(gpointer user_data, dt_undo_type_t type, dt_undo_data_t *item)
{
dt_develop_t *dev = (dt_develop_t *)user_data;
_masks_undo_data_t *udata = (_masks_undo_data_t *)item;
......@@ -290,7 +290,7 @@ void dt_masks_gui_form_test_create(dt_masks_form_t *form, dt_masks_form_gui_t *g
}
}
void _check_id(dt_masks_form_t *form)
static void _check_id(dt_masks_form_t *form)
{
GList *forms = g_list_first(darktable.develop->forms);
int nid = 100;
......@@ -1274,6 +1274,7 @@ int dt_masks_events_mouse_moved(struct dt_iop_module_t *module, double x, double
return rep;
}
int dt_masks_events_button_released(struct dt_iop_module_t *module, double x, double y, int which,
uint32_t state)
{
......@@ -1472,7 +1473,6 @@ void dt_masks_reset_show_masks_icons(void)
}
}
void dt_masks_set_edit_mode(struct dt_iop_module_t *module, dt_masks_edit_mode_t value)
{
if(!module) return;
......@@ -1528,6 +1528,7 @@ static void _menu_no_masks(struct dt_iop_module_t *module)
dt_dev_add_history_item(darktable.develop, module, TRUE);
dt_dev_masks_list_change(darktable.develop);
}
static void _menu_add_circle(struct dt_iop_module_t *module)
{
// we want to be sure that the iop has focus
......@@ -1540,6 +1541,7 @@ static void _menu_add_circle(struct dt_iop_module_t *module)
darktable.develop->form_gui->creation_module = module;
dt_control_queue_redraw_center();
}
static void _menu_add_path(struct dt_iop_module_t *module)
{
// we want to be sure that the iop has focus
......@@ -1551,6 +1553,7 @@ static void _menu_add_path(struct dt_iop_module_t *module)
darktable.develop->form_gui->creation_module = module;
dt_control_queue_redraw_center();
}
static void _menu_add_gradient(struct dt_iop_module_t *module)
{
// we want to be sure that the iop has focus
......@@ -1563,6 +1566,7 @@ static void _menu_add_gradient(struct dt_iop_module_t *module)
darktable.develop->form_gui->creation_module = module;
dt_control_queue_redraw_center();
}
static void _menu_add_ellipse(struct dt_iop_module_t *module)
{
// we want to be sure that the iop has focus
......@@ -1575,6 +1579,7 @@ static void _menu_add_ellipse(struct dt_iop_module_t *module)
darktable.develop->form_gui->creation_module = module;
dt_control_queue_redraw_center();
}
static void _menu_add_brush(struct dt_iop_module_t *module)
{
// we want to be sure that the iop has focus
......@@ -1586,6 +1591,7 @@ static void _menu_add_brush(struct dt_iop_module_t *module)
darktable.develop->form_gui->creation_module = module;
dt_control_queue_redraw_center();
}
static void _menu_add_exist(dt_iop_module_t *module, int formid)
{
if(!module) return;
......@@ -1617,6 +1623,7 @@ static void _menu_add_exist(dt_iop_module_t *module, int formid)
dt_dev_masks_list_change(darktable.develop);
dt_masks_set_edit_mode(module, DT_MASKS_EDIT_FULL);
}
void dt_masks_iop_use_same_as(dt_iop_module_t *module, dt_iop_module_t *src)
{
if(!module || !src) return;
......@@ -1875,6 +1882,19 @@ void dt_masks_form_remove(struct dt_iop_module_t *module, dt_masks_form_t *grp,
return;
}
if(form->type & DT_MASKS_GROUP && form->type & DT_MASKS_CLONE)
{
// when removing a cloning group the children have to be removed, too, as they won't be shown in the mask manager
// and are thus not accessible afterwards.
while(form->points)
{
dt_masks_point_group_t *group_child = (dt_masks_point_group_t *)form->points->data;
dt_masks_form_t *child = dt_masks_get_from_id(darktable.develop, group_child->formid);
dt_masks_form_remove(module, form, child);
// no need to do anything to form->points, the recursive call will have removed child from the list
}
}
// if we are here that mean we have to permanently delete this form
// we drop the form from all modules
GList *iops = g_list_first(darktable.develop->iop);
......@@ -2341,6 +2361,7 @@ int dt_masks_point_in_form_near(float x, float y, float *points, int points_star
}
return 0;
}
// modelines: These editor modelines have been set for all relevant files by tools/update_modelines.sh
// vim: shiftwidth=2 expandtab tabstop=2 cindent
// kate: tab-indents: off; indent-width 2; replace-tabs on; indent-mode cstyle; remove-trailing-spaces modified;
......@@ -63,7 +63,7 @@
* The following example shows a general use case for the C++
* bindings, including support for the optional exception feature and
* also the supplied vector and string classes, see following sections for
* decriptions of these features.
* descriptions of these features.
*
* \code
* #define __CL_ENABLE_EXCEPTIONS
......
......@@ -198,6 +198,7 @@ static void dt_dcraw_adobe_coeff(const char *name, float cam_xyz[1][12])
{ "Fujifilm X-E2", { 8458,-2451,-855,-4597,12447,2407,-1475,2482,6526 } },
{ "Fujifilm X-E3", { 11434,-4948,-1210,-3746,12042,1903,-666,1479,5235 } },
{ "Fujifilm X-E2S", { 11562,-5118,-961,-3022,11007,2311,-525,1569,6097 } },
{ "Fujifilm X-H1", { 11434,-4948,-1210,-3746,12042,1903,-666,1479,5235 } },
{ "Fujifilm X-M1", { 10413,-3996,-993,-3721,11640,2361,-733,1540,6011 } },
{ "Fujifilm X-S1", { 13509,-6199,-1254,-4430,12733,1865,-331,1441,5022 } },
{ "Fujifilm X-T10", { 8458,-2451,-855,-4597,12447,2407,-1475,2482,6526 } },
......@@ -219,7 +220,7 @@ static void dt_dcraw_adobe_coeff(const char *name, float cam_xyz[1][12])
{ "KODAK DCS420", { 10868,-1852,-644,-1537,11083,484,2343,628,2216 } },
{ "Kodak DCS460D", { 10592,-2206,-967,-1944,11685,230,2206,670,1273 } },
{ "Kodak EOS DCS 1", { 10592,-2206,-967,-1944,11685,230,2206,670,1273 } },
{ "KODAK EOSDCS3B", { 9898,-2700,-940,-2478,12219,206,1985,634,1031 } },
{ "Kodak EOS DCS 3", { 9898,-2700,-940,-2478,12219,206,1985,634,1031 } },
{ "Kodak DCS520C", { 24542,-10860,-3401,-1490,11370,-297,2858,-605,3225 } },
{ "Kodak DCS560C", { 20482,-7172,-3125,-1033,10410,-285,2542,226,3136 } },
{ "Kodak DCS620C", { 23617,-10175,-3149,-2054,11749,-272,2586,-489,3453 } },
......@@ -388,6 +389,7 @@ static void dt_dcraw_adobe_coeff(const char *name, float cam_xyz[1][12])
{ "Olympus E-PL5", { 8380,-2630,-639,-2887,10725,2496,-627,1427,5438 } },
{ "Olympus E-PL6", { 8380,-2630,-639,-2887,10725,2496,-627,1427,5438 } },
{ "Olympus E-PL7", { 9197,-3190,-659,-2606,10830,2039,-458,1250,5458 } },
{ "Olympus E-PL9", { 8380,-2630,-639,-2887,10725,2496,-627,1427,5438 } },
{ "Olympus E-PM1", { 7575,-2159,-571,-3722,11341,2725,-1434,2819,6271 } },
{ "Olympus E-PM2", { 8380,-2630,-639,-2887,10725,2496,-627,1427,5438 } },
{ "Olympus E-M10", { 8380,-2630,-639,-2887,10725,2496,-627,1427,5438 } },
......@@ -519,6 +521,7 @@ static void dt_dcraw_adobe_coeff(const char *name, float cam_xyz[1][12])
{ "Panasonic DC-FZ82", { 8550,-2908,-842,-3195,11529,1881,-338,1603,4631 } },
{ "Panasonic DC-GH5", { 7641,-2336,-605,-3218,11299,2187,-485,1338,5121 } },
{ "Panasonic DC-G9", { 7685,-2375,-634,-3687,11700,2249,-748,1546,5111 } },
{ "Panasonic DC-GX9", { 7564,-2263,-606,-3148,11239,2177,-540,1435,4853 } },
{ "Panasonic DC-TZ90", { 9052,-3117,-883,-3045,11346,1927,-205,1520,4730 } },
{ "Phase One H 20", { 1313,1855,-109,-6715,15908,808,-327,1840,6020 } }, /* DJC */
{ "Phase One H 25", { 2905,732,-237,-8134,16626,1476,-3038,4253,7517 } },
......@@ -574,6 +577,7 @@ static void dt_dcraw_adobe_coeff(const char *name, float cam_xyz[1][12])
{ "Sony DSC-RX10M4", { 7699,-2566,-629,-2967,11270,1928,-378,1286,4807 } },
{ "Sony DSC-RX10", { 6679,-1825,-745,-5047,13256,1953,-1580,2422,5183 } },
{ "Sony DSC-RX1R", { 6344,-1612,-462,-4863,12477,2681,-865,1786,6899 } },
{ "Sony DSC-RX1RM2", { 6629,-1900,-483,-4618,12349,2550,-622,1381,6514 } },
{ "Sony DSC-RX1", { 6344,-1612,-462,-4863,12477,2681,-865,1786,6899 } },
{ "Sony DSC-RX0", { 9396,-3507,-843,-2497,11111,1572,-343,1355,5089 } },
{ "Sony DSLR-A100", { 9437,-2811,-774,-8405,16215,2290,-710,596,7181 } },
......@@ -602,6 +606,7 @@ static void dt_dcraw_adobe_coeff(const char *name, float cam_xyz[1][12])
{ "Sony ILCE-7RM3", { 6640,-1847,-503,-5238,13010,2474,-993,1673,6527 } },
{ "Sony ILCE-7R", { 4913,-541,-202,-6130,13513,2906,-1564,2151,7183 } },
{ "Sony ILCE-7M2", { 5271,-712,-347,-6153,13653,2763,-1601,2366,7242 } },
{ "Sony ILCE-7M3", { 7374,-2389,-551,-5435,13162,2519,-1006,1795,6552 } },
{ "Sony ILCE-7", { 5271,-712,-347,-6153,13653,2763,-1601,2366,7242 } },
{ "Sony ILCE-3000", { 5991,-1456,-455,-4764,12135,2980,-707,1425,6701 } },
{ "Sony ILCE-3500", { 5991,-1456,-455,-4764,12135,2980,-707,1425,6701 } },
......
......@@ -37,7 +37,7 @@ RUN echo 'APT::Get::Assume-Yes "true";' > /etc/apt/apt.conf.d/80forceyes
RUN echo 'APT::Get::Fix-Missing "true";' > /etc/apt/apt.conf.d/80fixmissin
ENV GCC_VER=7
ENV LLVM_VER=5.0
ENV LLVM_VER=6.0
# pls keep sorted :)
RUN rm -rf /var/lib/apt/lists/* && apt-get update && \
......
---
Checks: '*,-clang-analyzer-*,-clang-diagnostic-*,-cert-dcl50-cpp,-cert-env33-c,-cert-err58-cpp,-cppcoreguidelines-pro-bounds-array-to-pointer-decay,-cppcoreguidelines-pro-bounds-constant-array-index,-cppcoreguidelines-pro-bounds-pointer-arithmetic,-cppcoreguidelines-pro-type-member-init,-cppcoreguidelines-pro-type-reinterpret-cast,-cppcoreguidelines-pro-type-vararg,-cppcoreguidelines-special-member-functions,-google-default-arguments,-google-readability-todo,-google-runtime-int,-hicpp-member-init,-hicpp-special-member-functions,-llvm-header-guard,-llvm-include-order,-misc-unused-parameters,-readability-implicit-bool-cast,-readability-inconsistent-declaration-parameter-name,-android-*,-hicpp-braces-around-statements,-hicpp-function-size,-google-readability-braces-around-statements,-google-readability-function-size,-readability-implicit-bool-conversion,-hicpp-signed-bitwise,-hicpp-no-array-decay,-hicpp-vararg,-cppcoreguidelines-owning-memory,-fuchsia-*,-readability-simd-intrinsics'
Checks: '*,-clang-analyzer-*,-clang-diagnostic-*,-cert-dcl50-cpp,-cert-env33-c,-cert-err58-cpp,-cppcoreguidelines-pro-bounds-array-to-pointer-decay,-cppcoreguidelines-pro-bounds-constant-array-in