Hello community,
here is the log from the commit of package darktable for openSUSE:Factory checked in at 2017-04-06 11:02:33
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/darktable (Old)
and /work/SRC/openSUSE:Factory/.darktable.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "darktable"
Thu Apr 6 11:02:33 2017 rev:67 rq:484803 version:2.2.4
Changes:
--------
--- /work/SRC/openSUSE:Factory/darktable/darktable.changes 2017-02-03 17:35:20.952674263 +0100
+++ /work/SRC/openSUSE:Factory/.darktable.new/darktable.changes 2017-04-06 11:02:34.747946276 +0200
@@ -1,0 +2,41 @@
+Mon Apr 3 08:08:36 UTC 2017 - mrueckert@suse.de
+
+- update to 2.2.4
+ - New features:
+ - Better brush trace handing of opacity to get better control.
+ - tools: Add script to purge stale thumbnails
+ - tools: A script to watch a folder for new images
+ - Bugfixes:
+ - DNG: fix camera name demangling. It used to report some wrong
+ name for some cameras.
+ - When using wayland, prefer XWayland, because native Wayland
+ support is not fully functional yet
+ - EXIF: properly handle image orientation '2' and '4' (swap
+ them)
+ - OpenCL: a few fixes in profiled denoise, demosaic and
+ colormapping
+ - tiling: do not process uselessly small end tiles
+ - masks: avoid assertion failure in early phase of path
+ generation,
+ - masks: reduce risk of unwanted self-finalization of small
+ path shapes
+ - Fix rare issue when expanding $() variables in import/export
+ string
+ - Camera import: fix ignore_jpg setting not having an effect
+ - Picasa web exporter: unbreak after upstream API change
+ - collection: fix query string for folders ( 'a' should match
+ 'a/b' and 'a/c', but not 'ac/' )
+ - Base Support:
+ - Fujifilm X-T20 (only uncompressed raw, at the moment)
+ - Fujifilm X100F (only uncompressed raw, at the moment)
+ - Nikon COOLPIX B700 (12bit-uncompressed)
+ - Olympus E-M1MarkII
+ - Panasonic DMC-TZ61 (4:3, 3:2, 1:1, 16:9)
+ - Panasonic DMC-ZS40 (4:3, 3:2, 1:1, 16:9)
+ - Sony ILCE-6500
+ - Noise Profiles:
+ - Canon PowerShot G7 X Mark II
+ - Olympus E-M1MarkII
+ - Lge Nexus 5X
+
+-------------------------------------------------------------------
Old:
----
darktable-2.2.3.tar.xz
New:
----
darktable-2.2.4.tar.xz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ darktable.spec ++++++
--- /var/tmp/diff_new_pack.GwWudS/_old 2017-04-06 11:02:36.279729781 +0200
+++ /var/tmp/diff_new_pack.GwWudS/_new 2017-04-06 11:02:36.279729781 +0200
@@ -47,7 +47,7 @@
%define cmake_options -DCMAKE_SKIP_RPATH:BOOL=OFF -DCMAKE_BUILD_TYPE=RelWithDebInfo -DBINARY_PACKAGE_BUILD=1 -DCMAKE_INSTALL_DATAROOTDIR="share" -DCMAKE_INSTALL_LIBDIR="%{_lib}"
Name: darktable
-Version: 2.2.3
+Version: 2.2.4
Release: 0
Url: http://www.darktable.org/
Source0: %{name}-%{version}.tar.xz
++++++ darktable-2.2.3.tar.xz -> darktable-2.2.4.tar.xz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/darktable-2.2.3/CMakeLists.txt new/darktable-2.2.4/CMakeLists.txt
--- old/darktable-2.2.3/CMakeLists.txt 2017-01-31 10:39:17.000000000 +0100
+++ new/darktable-2.2.4/CMakeLists.txt 2017-04-01 20:27:39.000000000 +0200
@@ -203,7 +203,7 @@
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-1b9ceb77d9b7b4bcbd7c5aee1c9cc3ffb353252e")
+ set(PROJECT_VERSION "archive-3a8aa201e55cf29092b4503bb5198c410d62e68d")
# but was it expanded?
if(PROJECT_VERSION MATCHES Format)
set(PROJECT_VERSION "unknown-version")
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/darktable-2.2.3/RELEASE_NOTES new/darktable-2.2.4/RELEASE_NOTES
--- old/darktable-2.2.3/RELEASE_NOTES 2017-01-31 10:39:17.000000000 +0100
+++ new/darktable-2.2.4/RELEASE_NOTES 2017-04-01 20:27:39.000000000 +0200
@@ -1,18 +1,48 @@
-we're proud to announce the third bugfix release for the 2.2 series of darktable, 2.2.3!
+we're proud to announce the fourth bugfix release for the 2.2 series of darktable, 2.2.4!
as always, please don't use the autogenerated tarball provided by github, but only our tar.xz. the checksum is:
- $ sha256sum darktable-2.2.3.tar.xz
- ??? darktable-2.2.3.tar.xz
- $ sha256sum darktable-2.2.3.dmg
- ??? darktable-2.2.3.dmg
+ $ sha256sum darktable-2.2.4.tar.xz
+ ??? darktable-2.2.4.tar.xz
+ $ sha256sum darktable-2.2.4.dmg
+ ??? darktable-2.2.4.dmg
#### Important note: to make sure that darktable can keep on supporting the raw file format for your camera, please help us by visiting https://raw.pixls.us/ and making sure that we have the full raw sample set for your camera under CC0 license!
-and the changelog as compared to 2.2.2 can be found below.
+and the changelog as compared to 2.2.3 can be found below.
+
+## New features:
+
+- Better brush trace handing of opacity to get better control.
+- tools: Add script to purge stale thumbnails
+- tools: A script to watch a folder for new images
## Bugfixes:
-- Fix fatal crash when generating preview for medium megapixel count (~16MP) Bayer images
-- Propely subtract black levels: respect the even/odd -ness of the raw crop origin point
-- Collection module: fix a few ui quirks
+- DNG: fix camera name demangling. It used to report some wrong name for some cameras.
+- When using wayland, prefer XWayland, because native Wayland support is not fully functional yet
+- EXIF: properly handle image orientation '2' and '4' (swap them)
+- OpenCL: a few fixes in profiled denoise, demosaic and colormapping
+- tiling: do not process uselessly small end tiles
+- masks: avoid assertion failure in early phase of path generation,
+- masks: reduce risk of unwanted self-finalization of small path shapes
+- Fix rare issue when expanding $() variables in import/export string
+- Camera import: fix ignore_jpg setting not having an effect
+- Picasa web exporter: unbreak after upstream API change
+- collection: fix query string for folders ( 'a' should match 'a/b' and 'a/c', but not 'ac/' )
+
+## Base Support:
+
+- Fujifilm X-T20 (only uncompressed raw, at the moment)
+- Fujifilm X100F (only uncompressed raw, at the moment)
+- Nikon COOLPIX B700 (12bit-uncompressed)
+- Olympus E-M1MarkII
+- Panasonic DMC-TZ61 (4:3, 3:2, 1:1, 16:9)
+- Panasonic DMC-ZS40 (4:3, 3:2, 1:1, 16:9)
+- Sony ILCE-6500
+
+## Noise Profiles:
+
+- Canon PowerShot G7 X Mark II
+- Olympus E-M1MarkII
+- Lge Nexus 5X
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/darktable-2.2.3/data/kernels/demosaic_vng.cl new/darktable-2.2.4/data/kernels/demosaic_vng.cl
--- old/darktable-2.2.3/data/kernels/demosaic_vng.cl 2017-01-31 10:39:17.000000000 +0100
+++ new/darktable-2.2.4/data/kernels/demosaic_vng.cl 2017-04-01 20:27:39.000000000 +0200
@@ -30,7 +30,7 @@
}
kernel void
-vng_border_interpolate(read_only image2d_t in, write_only image2d_t out, const int width, const int height,
+vng_border_interpolate(read_only image2d_t in, write_only image2d_t out, const int width, const int height, const int border,
const int r_x, const int r_y, const unsigned int filters, global const unsigned char (*const xtrans)[6])
{
const int x = get_global_id(0);
@@ -39,7 +39,6 @@
if(x >= width || y >= height) return;
const int colors = (filters == 9) ? 3 : 4;
- const int border = 2;
const int avgwindow = 1;
if(x >= border && x < width-border && y >= border && y < height-border) return;
@@ -271,7 +270,7 @@
for(int c = 0; c < colors; c++)
{
- if(c == color && offset1)
+ if(c == color && (idx1 + c1))
{
sum[c] += (buffer[c] + buffer[idx1 + c1]) * 0.5f;
}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/darktable-2.2.3/data/noiseprofiles.json new/darktable-2.2.4/data/noiseprofiles.json
--- old/darktable-2.2.3/data/noiseprofiles.json 2017-01-31 10:39:17.000000000 +0100
+++ new/darktable-2.2.4/data/noiseprofiles.json 2017-04-01 20:27:39.000000000 +0200
@@ -197,6 +197,33 @@
]
},
{
+ "comment": "powershot g7 x mark ii contributed by mariano",
+ "model": "PowerShot G7 X Mark II",
+ "profiles": [
+ {"name": "PowerShot G7 X Mark II iso 125", "iso": 125, "a": [1.06935133377294e-05, 1.00550358890388e-05, 4.13826960261977e-05], "b": [2.12312093053528e-08, -1.62220882963983e-08, -6.43505084400269e-09]},
+ {"name": "PowerShot G7 X Mark II iso 160", "iso": 160, "a": [1.41924958180789e-05, 1.12890228293744e-05, 4.57364966213153e-05], "b": [1.17944487227951e-08, 1.20181565749208e-08, 4.87935359794542e-08]},
+ {"name": "PowerShot G7 X Mark II iso 200", "iso": 200, "a": [1.6019548250256e-05, 1.35368424441407e-05, 5.49895799699785e-05], "b": [2.21538321747858e-08, 6.10681799492254e-09, 6.03149474029967e-08]},
+ {"name": "PowerShot G7 X Mark II iso 250", "iso": 250, "a": [1.88625087245583e-05, 1.62907844339081e-05, 6.73318044584856e-05], "b": [5.6456340188443e-08, 2.91054465018343e-08, 9.7334472038177e-08]},
+ {"name": "PowerShot G7 X Mark II iso 320", "iso": 320, "a": [2.34349678079496e-05, 2.01449876769379e-05, 6.84283107580354e-05], "b": [9.00745437394801e-08, 5.64859745530566e-08, 2.11337921311363e-07]},
+ {"name": "PowerShot G7 X Mark II iso 400", "iso": 400, "a": [5.6911440279177e-05, 2.24852582291037e-05, 3.48988851758936e-05], "b": [-1.17742962658112e-07, 4.28238195298461e-08, 1.94726473118584e-07]},
+ {"name": "PowerShot G7 X Mark II iso 500", "iso": 500, "a": [6.99856544228826e-05, 2.78278722081667e-05, 4.30933772072822e-05], "b": [-2.18499716445543e-07, 6.01365337752333e-08, 2.81839641620175e-07]},
+ {"name": "PowerShot G7 X Mark II iso 640", "iso": 640, "a": [8.55171244683898e-05, 3.40648750480151e-05, 5.45629410704495e-05], "b": [-9.84857479078553e-08, 1.19499389863408e-07, 3.17166864272111e-07]},
+ {"name": "PowerShot G7 X Mark II iso 800", "iso": 800, "a": [8.7295839268937e-05, 3.97762405610494e-05, 5.09359123186171e-05], "b": [-6.63535066849235e-08, 1.7555412672144e-07, 5.62879836831656e-07]},
+ {"name": "PowerShot G7 X Mark II iso 1000", "iso": 1000, "a": [0.000141929023993355, 5.44470621868961e-05, 7.40270360562961e-05], "b": [-2.9169720976641e-07, 2.04989457987547e-07, 6.05792781159337e-07]},
+ {"name": "PowerShot G7 X Mark II iso 1250", "iso": 1250, "a": [0.000162856305258218, 6.95756802056634e-05, 0.000112273901348038], "b": [-1.30457948717608e-07, 2.59381393813685e-07, 6.31868796737214e-07]},
+ {"name": "PowerShot G7 X Mark II iso 1600", "iso": 1600, "a": [8.9869180641876e-05, 8.12181591789464e-05, 0.00037039898069506], "b": [8.83892299062382e-07, 2.7435604894914e-07, 9.86964270431402e-08]},
+ {"name": "PowerShot G7 X Mark II iso 2000", "iso": 2000, "a": [0.000112062548407812, 9.95732435584513e-05, 0.000362506795126356], "b": [1.34204332451866e-06, 5.29302362111498e-07, 2.63202934020444e-06]},
+ {"name": "PowerShot G7 X Mark II iso 2500", "iso": 2500, "a": [0.000141471208039253, 0.000123258930290636, 0.00053838192930081], "b": [1.24285899115696e-06, 7.6501504971041e-07, 9.73786653812927e-07]},
+ {"name": "PowerShot G7 X Mark II iso 3200", "iso": 3200, "a": [0.000183015334304001, 0.000154323757995835, 0.000698875446552585], "b": [1.42367305014125e-06, 1.88744924849388e-06, 5.10875051792612e-06]},
+ {"name": "PowerShot G7 X Mark II iso 4000", "iso": 4000, "a": [0.000274054142962489, 0.000195518271899586, 0.000614438186199257], "b": [1.27524568623463e-06, 1.88620193284058e-06, 6.34959530263886e-06]},
+ {"name": "PowerShot G7 X Mark II iso 5000", "iso": 5000, "a": [0.000286501534227043, 0.000240680090527953, 5.68848260215146e-05], "b": [6.8373416327802e-06, 2.9787127831731e-06, 4.90992869072545e-05]},
+ {"name": "PowerShot G7 X Mark II iso 6400", "iso": 6400, "a": [0.000331255172605134, 0.000297108210639488, 0.00133601209104009], "b": [8.66110421116362e-06, 5.21013663033006e-06, 1.35819715828872e-06]},
+ {"name": "PowerShot G7 X Mark II iso 8000", "iso": 8000, "a": [0.00110689236968198, 0.000401836070762736, 0.000505535475596215], "b": [2.13798536789686e-06, 4.66954155211054e-06, 4.20369449483539e-06]},
+ {"name": "PowerShot G7 X Mark II iso 10000", "iso": 10000, "a": [0.000672674586355028, 0.000611624042729493, 0.00179572484717187], "b": [4.95726593098577e-06, 3.50617989536728e-06, 2.31662821686309e-06]},
+ {"name": "PowerShot G7 X Mark II iso 12800", "iso": 12800, "a": [0.00172832884019693, 0.000647089726943206, 0.000851192081451353], "b": [4.63571678267481e-06, 9.30747700171677e-06, 7.42848348404348e-06]}
+ ]
+ },
+ {
"comment": "eos 1200d contributed by aitatxoborja",
"model": "EOS 1200D",
"profiles": [
@@ -3016,7 +3043,22 @@
{"name": "E-M10MarkII iso 12800", "iso": 12800, "a": [0.000481645929928644, 0.00019163744252251, 0.000362326729576843], "b": [2.38746195987496e-06, 2.2508533772738e-06, 2.68981097675674e-06]},
{"name": "E-M10MarkII iso 25600", "iso": 25600, "a": [0.000993794684356688, 0.000404854394329772, 0.000759301032073675], "b": [5.40625299417711e-06, 5.72061095738384e-06, 6.53536538330311e-06]}
]
+ },
+ {
+ "comment": "Olympus OM-D E-M1 Mk.II profiled by Dawid Loubser (dawid.loubser@ibi.co.za)",
+ "model": "E-M1MarkII",
+ "profiles": [
+ {"name": "E-M1MarkII iso 64", "iso": 64, "a": [6.03448971452101e-06, 3.34702089057382e-06, 7.96405397670638e-06], "b": [5.64107208449212e-09, -2.5739502568846e-09, 3.54038442599048e-09]},
+ {"name": "E-M1MarkII iso 200", "iso": 200, "a": [6.13709922433744e-06, 3.54055600967237e-06, 8.11208952906179e-06], "b": [8.96247561553474e-09, 5.87516750118224e-09, 7.9760196090394e-09]},
+ {"name": "E-M1MarkII iso 400", "iso": 400, "a": [1.1277313652014e-05, 6.30341903686042e-06, 1.41886067124167e-05], "b": [1.54555312163237e-08, 7.06721019161393e-09, 1.48892314882207e-08]},
+ {"name": "E-M1MarkII iso 800", "iso": 800, "a": [2.11892459998804e-05, 1.12541173528155e-05, 2.56595516307882e-05], "b": [4.04565499925071e-08, 2.69246669230953e-08, 4.18664327519833e-08]},
+ {"name": "E-M1MarkII iso 1600", "iso": 1600, "a": [4.22953887838241e-05, 2.14948866100995e-05, 4.90974948586661e-05], "b": [8.22142492924679e-08, 6.15912238619032e-08, 8.30371607130872e-08]},
+ {"name": "E-M1MarkII iso 3200", "iso": 3200, "a": [8.09094889300661e-05, 4.03657735201826e-05, 9.11000593033239e-05], "b": [1.54850201636701e-07, 1.06491270486505e-07, 1.4547431044408e-07]},
+ {"name": "E-M1MarkII iso 6400", "iso": 6400, "a": [0.000162818243811292, 7.66465569572085e-05, 0.000189807939134868], "b": [3.4511459701267e-07, 2.72253170538817e-07, 3.08685445026257e-07]},
+ {"name": "E-M1MarkII iso 12800", "iso": 12800, "a": [0.000341007611560922, 0.000170115910815632, 0.000400188562023328], "b": [7.56753327460077e-07, 7.05251299439448e-07, 6.39453192395373e-07]}
+ ]
}
+
]
},
{
@@ -5010,6 +5052,20 @@
{"name": "Nexus 5 iso 3200", "iso": 3200, "a": [0.000753506842617197, 0.000424195799109644, 0.000858423239661108], "b": [1.42802529339895e-05, 1.26551608653164e-05, 2.19708111759326e-05]},
{"name": "Nexus 5 iso 3200", "iso": 3200, "a": [0.000778248212852919, 0.000442218441209912, 0.000922519536168604], "b": [1.15050395187219e-05, 1.01305383004307e-05, 1.47053958885876e-05]}
]
+ },
+ {
+ "comment": "nexus 5x contributed by Sarge Borsch",
+ "model": "Nexus 5X",
+ "profiles": [
+ {"name": "Nexus 5X iso 60", "iso": 60, "a": [2.18724635440073e-05, 1.05557509586381e-05, 2.06856905853928e-05], "b": [1.66052028312972e-07, 9.55635978146247e-08, 2.00820204265458e-07]},
+ {"name": "Nexus 5X iso 100", "iso": 100, "a": [3.40037933785799e-05, 1.64386562440801e-05, 3.23603320119039e-05], "b": [2.17459848749609e-07, 1.9450004472537e-07, 2.59733402750644e-07]},
+ {"name": "Nexus 5X iso 200", "iso": 200, "a": [6.29609122488214e-05, 3.02968380048786e-05, 6.15246579645498e-05], "b": [3.31339234517216e-07, 2.83081712707222e-07, 3.93992944328725e-07]},
+ {"name": "Nexus 5X iso 400", "iso": 400, "a": [0.000118920163604622, 5.97975508195949e-05, 0.000119072369570844], "b": [7.71584902760329e-07, 5.85259579504233e-07, 9.56146452102493e-07]},
+ {"name": "Nexus 5X iso 800", "iso": 800, "a": [0.000241967004742726, 0.000117212911979214, 0.000241787205831078], "b": [1.6279879300964e-06, 1.53288956902416e-06, 1.82003808803681e-06]},
+ {"name": "Nexus 5X iso 1600", "iso": 1600, "a": [0.000467007215178577, 0.000243549545744982, 0.000530478244134115], "b": [5.75436620025903e-06, 5.07053069187935e-06, 5.39069574574747e-06]},
+ {"name": "Nexus 5X iso 3200", "iso": 3200, "a": [0.00115094104008652, 0.000634412731636041, 0.0013788980751907], "b": [1.27209242215343e-05, 1.31560010627531e-05, 1.03411585308139e-05]},
+ {"name": "Nexus 5X iso 6400", "iso": 6400, "a": [0.00253880463939591, 0.00145105495305212, 0.00290179438260641], "b": [4.03830971306487e-05, 4.46765040219689e-05, 3.37034893542611e-05]}
+ ]
}
]
},
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/darktable-2.2.3/data/noiseprofiles.schema new/darktable-2.2.4/data/noiseprofiles.schema
--- old/darktable-2.2.3/data/noiseprofiles.schema 2017-01-31 10:39:17.000000000 +0100
+++ new/darktable-2.2.4/data/noiseprofiles.schema 2017-04-01 20:27:39.000000000 +0200
@@ -49,7 +49,7 @@
"type": "string",
"pattern": "^[a-zA-Z0-9\\- \\*]+$",
"minLength": 2,
- "maxLength": 18
+ "maxLength": 22
},
"profiles": {
"type": "array",
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/darktable-2.2.3/src/common/collection.c new/darktable-2.2.4/src/common/collection.c
--- old/darktable-2.2.3/src/common/collection.c 2017-01-31 10:39:17.000000000 +0100
+++ new/darktable-2.2.4/src/common/collection.c 2017-04-01 20:27:39.000000000 +0200
@@ -831,8 +831,9 @@
break;
case DT_COLLECTION_PROP_FOLDERS: // folders
- query = dt_util_dstrcat(query, "(film_id IN (SELECT id FROM main.film_rolls WHERE folder LIKE '%s%%'))",
- escaped_text);
+ query = dt_util_dstrcat(
+ query, "(film_id IN (SELECT id FROM main.film_rolls WHERE folder LIKE '%1$s' OR folder LIKE '%1$s/%%'))",
+ escaped_text);
break;
case DT_COLLECTION_PROP_COLORLABEL: // colorlabel
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/darktable-2.2.3/src/common/darktable.c new/darktable-2.2.4/src/common/darktable.c
--- old/darktable-2.2.3/src/common/darktable.c 2017-01-31 10:39:17.000000000 +0100
+++ new/darktable-2.2.4/src/common/darktable.c 2017-04-01 20:27:39.000000000 +0200
@@ -721,7 +721,15 @@
// we need this REALLY early so that error messages can be shown
if(init_gui)
+ {
+#ifdef GDK_WINDOWING_WAYLAND
+ // There are currently bad interactions with Wayland (drop-downs
+ // are very narrow, scroll events lost). Until this is fixed, give
+ // priority to the XWayland backend for Wayland users.
+ gdk_set_allowed_backends("x11,*");
+#endif
gtk_init(&argc, &argv);
+ }
#ifdef _OPENMP
omp_set_num_threads(darktable.num_openmp_threads);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/darktable-2.2.3/src/common/image.h new/darktable-2.2.4/src/common/image.h
--- old/darktable-2.2.3/src/common/image.h 2017-01-31 10:39:17.000000000 +0100
+++ new/darktable-2.2.4/src/common/image.h 2017-04-01 20:27:39.000000000 +0200
@@ -247,11 +247,11 @@
case 1:
return ORIENTATION_NONE;
case 2:
- return ORIENTATION_FLIP_VERTICALLY;
+ return ORIENTATION_FLIP_HORIZONTALLY;
case 3:
return ORIENTATION_ROTATE_180_DEG;
case 4:
- return ORIENTATION_FLIP_HORIZONTALLY;
+ return ORIENTATION_FLIP_VERTICALLY;
case 5:
return ORIENTATION_400; // ???
case 6:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/darktable-2.2.3/src/common/variables.c new/darktable-2.2.4/src/common/variables.c
--- old/darktable-2.2.3/src/common/variables.c 2017-01-31 10:39:17.000000000 +0100
+++ new/darktable-2.2.4/src/common/variables.c 2017-04-01 20:27:39.000000000 +0200
@@ -39,59 +39,26 @@
guint sequence;
} dt_variables_data_t;
-gchar *_string_get_first_variable(gchar *string, gchar *variable)
+gchar *_string_get_next_variable(gchar *string, gchar *variable, const size_t variable_size)
{
- if(g_strrstr(string, "$("))
- {
- gchar *pend = string + strlen(string);
- gchar *p, *e;
- p = e = string;
- while(p < pend && e < pend)
- {
- while(*p != '$' && *(p + 1) != '(' && p < pend) p++;
- if(*p == '$' && *(p + 1) == '(')
- {
- e = p;
- while(*e != ')' && e < pend) e++;
- if(e < pend && *e == ')')
- {
- strncpy(variable, p, e - p + 1);
- variable[e - p + 1] = '\0';
- return p + 1;
- }
- else
- return NULL;
- }
- p++;
- }
- return p + 1;
- }
- return NULL;
-}
-
-gchar *_string_get_next_variable(gchar *string, gchar *variable)
-{
- gchar *pend = string + strlen(string);
- gchar *p, *e;
- p = e = string;
- while(p < pend && e < pend)
- {
- while(!(*p == '$' && *(p + 1) == '(') && p <= pend) p++;
- if(*p == '$' && *(p + 1) == '(')
- {
- e = p;
- while(*e != ')' && e < pend) e++;
- if(e < pend && *e == ')')
- {
- strncpy(variable, p, e - p + 1);
- variable[e - p + 1] = '\0';
- return p + 1;
- }
- else
- return NULL;
- }
- }
- return NULL;
+ // initiate empty output variable
+ *variable = '\0';
+ gchar *end = NULL;
+ gchar *start = g_strstr_len(string, -1, "$(");
+ if(start)
+ {
+ end = g_strstr_len(start, variable_size, ")");
+ if(end)
+ {
+ // we want to include ')'
+ end++;
+ const int length = end - start + 1;
+ g_strlcpy(variable, start, MIN(length, variable_size));
+ }
+ }
+ // fprintf(stderr, "_string_get_next_variable: splitted %s in variable %s and remainder %s\n", string, variable,
+ // end);
+ return end;
}
gboolean _variable_get_value(dt_variables_params_t *params, gchar *variable, gchar *value, size_t value_len)
@@ -110,6 +77,7 @@
else
pictures_folder = g_strdup(g_get_user_special_dir(G_USER_DIRECTORY_PICTURES));
+ // fprintf(stderr, "pictures_folder: %s\n", pictures_folder);
if(params->filename)
{
file_ext = (g_strrstr(params->filename, ".") + 1);
@@ -351,38 +319,44 @@
gboolean dt_variables_expand(dt_variables_params_t *params, gchar *string, gboolean iterate)
{
- gchar *variable = g_malloc(128);
+ static const size_t variable_size = 128;
+ gchar *variable = g_malloc(variable_size);
gchar *value = g_malloc_n(1024, sizeof(gchar));
- gchar *token = NULL;
// Let's free previous expanded result if any...
g_free(params->data->result);
if(iterate) params->data->sequence++;
- // Lets expand string
- gchar *result = NULL;
+ // Lets expand the string
params->data->result = params->data->source = string;
- if((token = _string_get_first_variable(params->data->source, variable)) != NULL)
- {
- do
- {
- // fprintf(stderr,"var: %s\n",variable);
- if(_variable_get_value(params, variable, value, 1024 * sizeof(gchar)))
+
+ gchar *result = NULL;
+ gchar *remainingVariables = params->data->source;
+ gboolean success = FALSE;
+ while((remainingVariables = _string_get_next_variable(remainingVariables, variable, variable_size)))
+ {
+ if(_variable_get_value(params, variable, value, 1024 * sizeof(gchar)))
+ {
+ // fprintf(stderr, "Substitute variable '%s' with value '%s'\n", variable, value);
+ result = dt_util_str_replace(params->data->result, variable, value);
+ if(result != params->data->result && result != params->data->source)
{
- // fprintf(stderr,"Substitute variable '%s' with value '%s'\n",variable,value);
- if((result = dt_util_str_replace(params->data->result, variable, value)) != params->data->result
- && result != params->data->source)
+ // we got a result
+ if(params->data->result != params->data->source)
{
- // we got a result
- if(params->data->result != params->data->source) g_free(params->data->result);
- params->data->result = result;
+ g_free(params->data->result);
}
+ params->data->result = result;
+ success = TRUE;
}
- } while((token = _string_get_next_variable(token, variable)) != NULL);
+ }
}
- else
+
+ if(!success)
+ {
params->data->result = g_strdup(string);
+ }
g_free(variable);
g_free(value);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/darktable-2.2.3/src/develop/masks/brush.c new/darktable-2.2.4/src/develop/masks/brush.c
--- old/darktable-2.2.3/src/develop/masks/brush.c 2017-01-31 10:39:17.000000000 +0100
+++ new/darktable-2.2.4/src/develop/masks/brush.c 2017-04-01 20:27:39.000000000 +0200
@@ -24,6 +24,11 @@
#include "develop/imageop.h"
#include "develop/masks.h"
+#define CREATE_MAX_BRUSH_OPACITY 0.5f
+// the maximum opacity when drawing a mask, this is to let see through it for better control
+#define CREATE_MAX_TRACE_OPACITY 0.8f
+// like above but for the trace
+
/** get squared distance of indexed point to line segment, taking weighted payload data into account */
static float _brush_point_line_distance2(int index, int pointscount, const float *points, const float *payload)
{
@@ -2089,7 +2094,7 @@
}
cairo_save(cr);
- cairo_set_source_rgba(cr, .8, .8, .8, masks_density);
+ cairo_set_source_rgba(cr, .8, .8, .8, masks_density * CREATE_MAX_BRUSH_OPACITY);
cairo_arc(cr, xpos, ypos, radius1, 0, 2.0 * M_PI);
cairo_fill_preserve(cr);
cairo_set_source_rgba(cr, .8, .8, .8, .8);
@@ -2144,7 +2149,7 @@
opacity = oldopacity = masks_density;
cairo_set_line_width(cr, 2 * radius);
- cairo_set_source_rgba(cr, .1, .1, .1, opacity);
+ cairo_set_source_rgba(cr, .1, .1, .1, opacity * CREATE_MAX_TRACE_OPACITY);
cairo_move_to(cr, guipoints[0], guipoints[1]);
for(int i = 1; i < gui->guipoints_count; i++)
@@ -2187,7 +2192,7 @@
cairo_stroke(cr);
stroked = 1;
cairo_set_line_width(cr, 2 * radius);
- cairo_set_source_rgba(cr, .1, .1, .1, opacity);
+ cairo_set_source_rgba(cr, .1, .1, .1, opacity * CREATE_MAX_TRACE_OPACITY);
oldradius = radius;
oldopacity = opacity;
cairo_move_to(cr, guipoints[i * 2], guipoints[i * 2 + 1]);
@@ -2196,7 +2201,7 @@
if(!stroked) cairo_stroke(cr);
cairo_set_line_width(cr, linewidth);
- cairo_set_source_rgba(cr, .8, .8, .8, opacity);
+ cairo_set_source_rgba(cr, .8, .8, .8, opacity * CREATE_MAX_BRUSH_OPACITY);
cairo_arc(cr, guipoints[2 * (gui->guipoints_count - 1)],
guipoints[2 * (gui->guipoints_count - 1) + 1], radius, 0, 2.0 * M_PI);
cairo_fill_preserve(cr);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/darktable-2.2.3/src/develop/masks/path.c new/darktable-2.2.4/src/develop/masks/path.c
--- old/darktable-2.2.3/src/develop/masks/path.c 2017-01-31 10:39:17.000000000 +0100
+++ new/darktable-2.2.4/src/develop/masks/path.c 2017-04-01 20:27:39.000000000 +0200
@@ -342,6 +342,8 @@
/** find all self intersections in a path */
static int _path_find_self_intersection(dt_masks_dynbuf_t *inter, int nb_corners, float *border, int border_count)
{
+ if(nb_corners == 0 || border_count == 0) return 0;
+
int inter_count = 0;
// we search extreme points in x and y
@@ -526,7 +528,7 @@
}
}
- intersections = dt_masks_dynbuf_init(10 * nb, "path intersections");
+ intersections = dt_masks_dynbuf_init(10 * MAX(nb, 1), "path intersections");
if(intersections == NULL)
{
dt_masks_dynbuf_free(dpoints);
@@ -1468,7 +1470,7 @@
int closeup = dt_control_get_dev_closeup();
float zoom_scale = dt_dev_get_zoom_scale(darktable.develop, zoom, closeup ? 2 : 1, 1);
// centre view will have zoom_scale * backbuf_width pixels, we want the handle offset to scale with DPI:
- const float as = DT_PIXEL_APPLY_DPI(15) / zoom_scale; // transformed to backbuf dimensions
+ const float as = DT_PIXEL_APPLY_DPI(5) / zoom_scale; // transformed to backbuf dimensions
if(!gui) return 0;
dt_masks_form_gui_points_t *gpt = (dt_masks_form_gui_points_t *)g_list_nth_data(gui->points, index);
if(!gpt) return 0;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/darktable-2.2.3/src/develop/tiling.c new/darktable-2.2.4/src/develop/tiling.c
--- old/darktable-2.2.3/src/develop/tiling.c 2017-01-31 10:39:17.000000000 +0100
+++ new/darktable-2.2.4/src/develop/tiling.c 2017-04-01 20:27:39.000000000 +0200
@@ -731,8 +731,8 @@
size_t wd = tx * tile_wd + width > roi_in->width ? roi_in->width - tx * tile_wd : width;
size_t ht = ty * tile_ht + height > roi_in->height ? roi_in->height - ty * tile_ht : height;
- /* no need to process end-tiles that are smaller than overlap */
- if((wd <= overlap && tx > 0) || (ht <= overlap && ty > 0)) continue;
+ /* no need to process end-tiles that are smaller than the total overlap area */
+ if((wd <= 2 * overlap && tx > 0) || (ht <= 2 * overlap && ty > 0)) continue;
/* origin and region of effective part of tile, which we want to store later */
size_t origin[] = { 0, 0, 0 };
@@ -1375,8 +1375,8 @@
size_t wd = tx * tile_wd + width > roi_in->width ? roi_in->width - tx * tile_wd : width;
size_t ht = ty * tile_ht + height > roi_in->height ? roi_in->height - ty * tile_ht : height;
- /* no need to process (end)tiles that are smaller than overlap */
- if((wd <= overlap && tx > 0) || (ht <= overlap && ty > 0)) continue;
+ /* no need to process (end)tiles that are smaller than the total overlap area */
+ if((wd <= 2 * overlap && tx > 0) || (ht <= 2 * overlap && ty > 0)) continue;
/* origin and region of effective part of tile, which we want to store later */
size_t origin[] = { 0, 0, 0 };
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/darktable-2.2.3/src/external/adobe_coeff.c new/darktable-2.2.4/src/external/adobe_coeff.c
--- old/darktable-2.2.3/src/external/adobe_coeff.c 2017-01-31 10:39:17.000000000 +0100
+++ new/darktable-2.2.4/src/external/adobe_coeff.c 2017-04-01 20:27:39.000000000 +0200
@@ -172,6 +172,7 @@
{ "Fujifilm FinePix HS20EXR", { 13690,-5358,-1474,-3369,11600,1998,-132,1554,4395 } },
{ "Fujifilm FinePix HS30EXR", { 13690,-5358,-1474,-3369,11600,1998,-132,1554,4395 } },
{ "Fujifilm FinePix HS50EXR", { 12085,-4727,-953,-3257,11489,2002,-511,2046,4592 } },
+ { "Fujifilm X100F", { 11434,-4948,-1210,-3746,12042,1903,-666,1479,5235 } },
{ "Fujifilm X100T", { 10592,-4262,-1008,-3514,11355,2465,-870,2025,6386 } },
{ "Fujifilm X100S", { 10592,-4262,-1008,-3514,11355,2465,-870,2025,6386 } },
{ "Fujifilm FinePix X100", { 12161,-4457,-1069,-5034,12874,2400,-795,1724,6904 } },
@@ -189,6 +190,7 @@
{ "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 } },
+ { "Fujifilm X-T20", { 10592,-4262,-1008,-3514,11355,2465,-870,2025,6386 } },
{ "Fujifilm X-T1", { 8458,-2451,-855,-4597,12447,2407,-1475,2482,6526 } },
{ "Fujifilm X-T2", { 11434,-4948,-1210,-3746,12042,1903,-666,1479,5235 } },
{ "Fujifilm XF1", { 13509,-6199,-1254,-4430,12733,1865,-331,1441,5022 } },
@@ -319,6 +321,7 @@
{ "Nikon E8700", { 8489,-2583,-1036,-8051,15583,2643,-1307,1407,7354 } },
{ "Nikon Coolpix E8800", { 7971,-2314,-913,-8451,15762,2894,-1442,1520,7610 } },
{ "Nikon Coolpix A", { 8198,-2239,-724,-4871,12389,2798,-1043,2050,7181 } },
+ { "Nikon COOLPIX B700", { 14387,-6014,-1299,-1357,9975,1616,467,1047,4744 } },
{ "Nikon Coolpix P330", { 10321,-3920,-931,-2750,11146,1824,-442,1545,5539 } },
{ "Nikon Coolpix P340", { 10321,-3920,-931,-2750,11146,1824,-442,1545,5539 } },
{ "Nikon Coolpix P6000", { 9698,-3367,-914,-4706,12584,2368,-837,968,5801 } },
@@ -375,6 +378,7 @@
{ "Olympus E-M10", { 8380,-2630,-639,-2887,10725,2496,-627,1427,5438 } },
{ "Olympus E-M10 Mark II", { 8380,-2630,-639,-2887,10725,2496,-627,1427,5438 } },
{ "Olympus E-M1", { 7687,-1984,-606,-4327,11928,2721,-1381,2339,6452 } },
+ { "Olympus E-M1MarkII", { 9383,-3170,-763,-2457,10702,2020,-384,1236,5552 } },
{ "Olympus E-M5 Mark II", { 9422,-3258,-711,-2655,10898,2015,-512,1354,5512 } },
{ "Olympus E-M5", { 8380,-2630,-639,-2887,10725,2496,-627,1427,5438 } },
{ "Olympus PEN-F", { 9476,-3182,-765,-2613,10958,1893,-449,1315,5268 } },
@@ -487,6 +491,7 @@
{ "Panasonic DMC-GX8", { 7564,-2263,-606,-3148,11239,2177,-540,1435,4853 } },
{ "Panasonic DMC-GX85", { 7771,-3020,-629,-4029,11950,2345,-821,1977,6119 } },
{ "Panasonic DMC-TZ60", { 8607,-2822,-808,-3755,11930,2049,-820,2060,5224 } },
+ { "Panasonic DMC-TZ61", { 8607,-2822,-808,-3755,11930,2049,-820,2060,5224 } },
{ "Panasonic DMC-TZ71", { 8802,-3135,-789,-3151,11468,1904,-550,1745,4810 } },
{ "Panasonic DMC-TZ100", { 7790,-2736,-755,-3452,11870,1769,-628,1647,4898 } },
{ "Phase One H 20", { 1313,1855,-109,-6715,15908,808,-327,1840,6020 } }, /* DJC */
@@ -573,6 +578,7 @@
{ "Sony ILCE-5100", { 5991,-1456,-455,-4764,12135,2980,-707,1425,6701 } },
{ "Sony ILCE-6000", { 5991,-1456,-455,-4764,12135,2980,-707,1425,6701 } },
{ "Sony ILCE-6300", { 5973,-1695,-419,-3826,11797,2293,-639,1398,5789 } },
+ { "Sony ILCE-6500", { 5973,-1695,-419,-3826,11797,2293,-639,1398,5789 } },
{ "Sony NEX-5N", { 5991,-1456,-455,-4764,12135,2980,-707,1425,6701 } },
{ "Sony NEX-5R", { 6129,-1545,-418,-4930,12490,2743,-977,1693,6615 } },
{ "Sony NEX-5T", { 6129,-1545,-418,-4930,12490,2743,-977,1693,6615 } },
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/darktable-2.2.3/src/external/rawspeed/RawSpeed/CameraMetaData.cpp new/darktable-2.2.4/src/external/rawspeed/RawSpeed/CameraMetaData.cpp
--- old/darktable-2.2.3/src/external/rawspeed/RawSpeed/CameraMetaData.cpp 2017-01-31 10:39:17.000000000 +0100
+++ new/darktable-2.2.4/src/external/rawspeed/RawSpeed/CameraMetaData.cpp 2017-04-01 20:27:39.000000000 +0200
@@ -1,5 +1,6 @@
#include "StdAfx.h"
#include "CameraMetaData.h"
+#include <algorithm>
/*
RawSpeed - RAW file decoder.
@@ -50,47 +51,54 @@
}
CameraMetaData::~CameraMetaData(void) {
- map