Revision 5e3703dc3b0292695d1dfeca6dd74bedaef0f5b5 authored by Pascal Obry on 30 December 2016, 09:41:58 UTC, committed by Pascal Obry on 16 January 2017, 21:54:23 UTC
The implementation of the undo/redo was simple but was letting the complexity in the hand of the API users. In fact there was a need to keep a prev state and and a current state, and to record only previous states and not the current one. This was mostly working (except for a redo bug discoverred while working on this new implementation) but was tedious. The new undo implementation is more complex but makes it far easier to use. That is, modules can just record the current state and they don't need to keep a previous state at all. The undo history and map support has been reimplemented with this new semantics and have been cleaned-up as a consequence. This work has been highly motivated by the fact that we want to support undo/redo for masks and that it was far too complex to do right with the previous implementation.
1 parent d8e7d14
.travis.yml
# This file is part of darktable.
# copyright (c) 2016 Roman Lebedev.
#
# darktable is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# darktable is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with darktable. If not, see <http://www.gnu.org/licenses/>.
notifications:
irc:
channels:
# - "chat.freenode.net#darktable"
- secure: "fCQRwV2kMc5ycWjuuim0q+u9DS8D64oIWpfDipvrJDcIsS+MfkfkKrF68kDhNbDNtZHUfvP2Se/0hxUWw825VnyzNZZImrK+giOIGS588apxBPzNY3YMWMzwc4RaCKfyOWvFZDRGJwFzAwPWdSSQh7KMGJj7VibgoyhDTSSJYAk="
skip_join: true
template:
- "%{repository}#%{build_number} (\x037%{branch}\x03 - \x02%{commit}\x02 : \x033%{author}\x03): \x1f\x02%{message}\x02\x1f"
- "Build details : <%{build_url}>"
email:
recipients:
# - darktable-ci@lists.darktable.org
- secure: "Fvo7jlL8jpV+asdCmHHeJUK4BYw1JQvAxFpKUPZ/FWjkBfZ3W6is8jRBJVGfnt9TTvD1W2vsaLqeClv1SUfYw0t0keRSP0+0TB5R9ULIfC6/3bFLmp2aDPhBHLRjH3byxiJ46PvADcZ7MC+6jtf0YEEqy6uLbjaX4PiIXINM7Bo="
on_success: always
on_failure: always
language: generic
os:
- linux
- osx
sudo: required
services:
- docker
before_install:
- if [[ "$TRAVIS_OS_NAME" == "linux" ]]; then docker pull darktable/darktable; fi
- if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then brew update && brew tap Homebrew/bundle && brew bundle --verbose; fi
env:
global:
- SRC_DIR=/build/darktable
- BUILD_DIR=/build/darktable-build
- INSTALL_PREFIX=/build/darktable-install
- CFLAGS=-pipe CXXFLAGS=-pipe
matrix:
- CC=cc CXX=c++ TARGET=build # default system compiler, all platforms
matrix:
fast_finish: true
include:
- os: linux
sudo: required
services:
- docker
env: CC=clang-3.9 CXX=clang++-3.9 TARGET=build
- os: osx
env: CC=gcc-6 CXX=c++ TARGET=build # can't use CXX=g++-6 fails for osx.mm
- os: linux
sudo: required
services:
- docker
env: CC=cc CXX=c++ 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 darktable/darktable sh -c "$SRC_DIR/ci-script.sh"; fi
- if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then
export SRC_DIR="$TRAVIS_BUILD_DIR";
export BUILD_DIR="$SRC_DIR/build";
export INSTALL_PREFIX="$SRC_DIR/install";
mkdir "$BUILD_DIR";
mkdir "$INSTALL_PREFIX";
"$SRC_DIR/ci-script.sh";
fi
Computing file changes ...