Merge lp:~sergiusens/grail/update into lp:grail/phablet

Proposed by Sergio Schvezov
Status: Merged
Approved by: Daniel d'Andrada
Approved revision: 250
Merged at revision: 250
Proposed branch: lp:~sergiusens/grail/update
Merge into: lp:grail/phablet
Diff against target: 1605 lines (+298/-649)
46 files modified
Makefile.am (+1/-0)
configure.ac (+2/-2)
debian/changelog (+45/-0)
debian/control (+2/-2)
debian/copyright (+3/-4)
m4/gtest.m4 (+13/-5)
m4/xorg-gtest.m4 (+2/-31)
src/handle.cpp (+1/-6)
src/touch.cpp (+2/-10)
test/integration/device.cpp (+2/-3)
test/integration/device.h (+2/-3)
test/integration/events.h (+2/-3)
test/integration/recording.cpp (+2/-3)
test/integration/recording.h (+2/-3)
test/integration/slice-checker.cpp (+2/-3)
test/integration/slice-checker.h (+2/-3)
test/integration/x11/atomic-timeout.cpp (+2/-3)
test/integration/x11/dragthresh.cpp (+2/-3)
test/integration/x11/fixture.cpp (+2/-3)
test/integration/x11/fixture.h (+2/-3)
test/integration/x11/hold-reject.cpp (+2/-3)
test/integration/x11/no-premature-gestures.cpp (+2/-3)
test/integration/x11/no-tap-after-drag.cpp (+2/-3)
test/integration/x11/parallel-atomic-gestures.cpp (+2/-3)
test/integration/x11/tap-touch-accept.cpp (+2/-3)
test/integration/x11/timeout.cpp (+2/-3)
test/integration/x11/twodrag.cpp (+2/-3)
test/regular/Makefile.am (+2/-3)
test/regular/frame_mock.cpp (+0/-254)
test/regular/frame_mock.h (+0/-66)
test/regular/grail-fixture.cpp (+133/-111)
test/regular/grail-fixture.h (+18/-20)
test/regular/intermittent_3touch.cpp (+1/-1)
test/regular/one-touch-gest-finished.cpp (+5/-24)
test/regular/pending-end.cpp (+9/-7)
test/regular/still-gest-finishes.cpp (+3/-19)
tools/common/device.c (+2/-3)
tools/common/device.h (+2/-3)
tools/common/servertime.c (+2/-3)
tools/common/servertime.h (+2/-3)
tools/common/slice.c (+2/-3)
tools/common/slice.h (+2/-3)
tools/grail-test-3-1.c (+2/-3)
tools/grail-test-atomic.c (+2/-3)
tools/grail-test-edge.c (+2/-3)
tools/grail-test-propagation.c (+2/-3)
To merge this branch: bzr merge lp:~sergiusens/grail/update
Reviewer Review Type Date Requested Status
Daniel d'Andrada (community) Approve
Review via email: mp+155228@code.launchpad.net

Commit message

Bringing in updates from trunk

To post a comment you must log in.
Revision history for this message
Daniel d'Andrada (dandrader) wrote :

looks ok.

review: Approve

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
=== modified file 'Makefile.am'
--- Makefile.am 2012-11-20 20:13:00 +0000
+++ Makefile.am 2013-03-25 13:49:07 +0000
@@ -1,4 +1,5 @@
1ACLOCAL_AMFLAGS = -I m4 --install1ACLOCAL_AMFLAGS = -I m4 --install
2AM_DISTCHECK_CONFIGURE_FLAGS = --disable-integration-tests
23
3SUBDIRS = src test4SUBDIRS = src test
45
56
=== modified file 'configure.ac'
--- configure.ac 2012-11-29 15:41:42 +0000
+++ configure.ac 2013-03-25 13:49:07 +0000
@@ -2,7 +2,7 @@
2# Initialize Autoconf2# Initialize Autoconf
3AC_PREREQ([2.60])3AC_PREREQ([2.60])
4AC_INIT([Gesture Recognition And Instantiation Library],4AC_INIT([Gesture Recognition And Instantiation Library],
5 [3.0.9],5 [3.1.0],
6 [],6 [],
7 [grail])7 [grail])
8AC_CONFIG_SRCDIR([Makefile.am])8AC_CONFIG_SRCDIR([Makefile.am])
@@ -65,7 +65,7 @@
65#################################65#################################
66# check mandatory build dependencies66# check mandatory build dependencies
6767
68PKG_CHECK_MODULES([FRAME], [frame >= 2.2.0])68PKG_CHECK_MODULES([FRAME], [frame >= 2.5.0])
6969
70#################################70#################################
71# debug builds71# debug builds
7272
=== modified file 'debian/changelog'
--- debian/changelog 2012-11-29 21:06:52 +0000
+++ debian/changelog 2013-03-25 13:49:07 +0000
@@ -1,9 +1,54 @@
1grail (3.1.0phablet1) quantal; urgency=low
2
3 * Merging current branch into phablet series.
4
5 -- Sergio Schvezov <sergio.schvezov@canonical.com> Mon, 25 Mar 2013 10:43:34 -0300
6
7grail (3.1.0daily13.02.26-0ubuntu1) raring; urgency=low
8
9 [ Stephen M. Webb ]
10 * New upstream release to pick up licensing changes.
11
12 [ Automatic PS uploader ]
13 * Automatic snapshot from revision 253
14
15 -- Automatic PS uploader <ps-jenkins@lists.canonical.com> Tue, 26 Feb 2013 02:02:10 +0000
16
1grail (3.0.9phablet1) quantal; urgency=low17grail (3.0.9phablet1) quantal; urgency=low
218
3 * Releasing version for phablet19 * Releasing version for phablet
420
5 -- Ricardo Salveti de Araujo <ricardo.salveti@canonical.com> Thu, 29 Nov 2012 18:28:25 -020021 -- Ricardo Salveti de Araujo <ricardo.salveti@canonical.com> Thu, 29 Nov 2012 18:28:25 -0200
622
23grail (3.0.9daily12.12.07.1-0ubuntu1) raring; urgency=low
24
25 [ Daniel d'Andrada ]
26 * Relicense under (L)GPL version 3 *only* (no +)
27 * Updated libframe version dependency to 2.5.0
28 * Use frame_backend.h instead of a frame mock in tests
29 * Get rid of x11 specific code in grail implementation
30
31 [ Automatic PS uploader ]
32 * Automatic snapshot from revision 251
33
34 -- Automatic PS uploader <ps-jenkins@lists.canonical.com> Fri, 07 Dec 2012 06:37:45 +0000
35
36grail (3.0.9daily12.12.03-0ubuntu1) raring; urgency=low
37
38 [ Robert Bruce Park ]
39 * Inline packaging metadata.
40
41 [ Didier Roche ]
42 * Automatic snapshot from revision 244 (bootstrap)
43
44 [ Daniel d'Andrada ]
45 * Updated libframe version dependency to 2.4.4
46
47 [ Automatic PS uploader ]
48 * Automatic snapshot from revision 247
49
50 -- Automatic PS uploader <ps-jenkins@lists.canonical.com> Mon, 03 Dec 2012 02:01:33 +0000
51
7grail (3.0.9-0phablet1) quantal; urgency=low52grail (3.0.9-0phablet1) quantal; urgency=low
853
9 [ Robert Bruce Park ]54 [ Robert Bruce Park ]
1055
=== modified file 'debian/control'
--- debian/control 2012-11-29 16:14:03 +0000
+++ debian/control 2013-03-25 13:49:07 +0000
@@ -1,10 +1,10 @@
1Source: grail1Source: grail
2Section: libs2Section: libs
3Priority: optional3Priority: optional
4Maintainer: Daniel d'Andrada <daniel.dandrada@canonical.com>4Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
5Build-Depends: debhelper (>= 9),5Build-Depends: debhelper (>= 9),
6 dh-autoreconf,6 dh-autoreconf,
7 libframe-dev (>= 2.4.4),7 libframe-dev (>= 2.5.0),
8 pkg-config,8 pkg-config,
9Standards-Version: 3.9.39Standards-Version: 3.9.3
10Homepage: https://launchpad.net/grail10Homepage: https://launchpad.net/grail
1111
=== modified file 'debian/copyright'
--- debian/copyright 2012-11-22 21:28:42 +0000
+++ debian/copyright 2013-03-25 13:49:07 +0000
@@ -22,11 +22,10 @@
2222
23Files: test/* tools/*23Files: test/* tools/*
24Copyright: 2010-2012 Canonical Ltd.24Copyright: 2010-2012 Canonical Ltd.
25License: GPL-3+25License: GPL-3
26 This program is free software: you can redistribute it and/or modify26 This program is free software: you can redistribute it and/or modify
27 it under the terms of the GNU General Public License as published by27 it under the terms of version 3 of the GNU General Public License as
28 the Free Software Foundation, either version 3 of the License, or28 published by the Free Software Foundation.
29 (at your option) any later version.
30 .29 .
31 This program is distributed in the hope that it will be useful,30 This program is distributed in the hope that it will be useful,
32 but WITHOUT ANY WARRANTY; without even the implied warranty of31 but WITHOUT ANY WARRANTY; without even the implied warranty of
3332
=== modified file 'm4/gtest.m4'
--- m4/gtest.m4 2012-06-29 20:59:33 +0000
+++ m4/gtest.m4 2013-03-25 13:49:07 +0000
@@ -1,4 +1,4 @@
1# serial 11# serial 2
22
3# Copyright (C) 2012 Canonical, Ltd.3# Copyright (C) 2012 Canonical, Ltd.
4#4#
@@ -40,10 +40,18 @@
4040
41 GTEST_CPPFLAGS="$GTEST_CPPFLAGS -I$GTEST_SOURCE"41 GTEST_CPPFLAGS="$GTEST_CPPFLAGS -I$GTEST_SOURCE"
4242
43 AC_CHECK_FILES([$GTEST_SOURCE/src/gtest-all.cc]43 AC_LANG_PUSH(C++)
44 [$GTEST_SOURCE/src/gtest_main.cc],44 gtest_save_CPPFLAGS=$CPPFLAGS
45 [have_gtest=yes],45 CPPFLAGS="$CPPFLAGS $GTEST_CPPFLAGS"
46 [have_gtest=no])46 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include "src/gtest-all.cc"]])],
47 [have_gtest=yes],
48 [have_gtest=no])
49 AS_IF([test "x$have_gtest" = xyes],
50 [AC_COMPILE_IFELSE([AC_LANG_SOURCE([[#include "src/gtest_main.cc"]])],
51 [],
52 [have_gtest=no])])
53 CPPFLAGS=$gtest_save_CPPFLAGS
54 AC_LANG_POP(C++)
4755
48 AS_IF([test "x$have_gtest" = xyes],56 AS_IF([test "x$have_gtest" = xyes],
49 [GTEST_LIBS=-lpthread57 [GTEST_LIBS=-lpthread
5058
=== modified file 'm4/xorg-gtest.m4'
--- m4/xorg-gtest.m4 2012-07-24 21:52:37 +0000
+++ m4/xorg-gtest.m4 2013-03-25 13:49:07 +0000
@@ -1,4 +1,4 @@
1# serial 21# serial 3
22
3# Copyright (C) 2012 Canonical, Ltd.3# Copyright (C) 2012 Canonical, Ltd.
4#4#
@@ -21,35 +21,6 @@
21# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE21# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
22# SOFTWARE.22# SOFTWARE.
2323
24# Checks whether the gtest source is available on the system. Allows for
25# adjusting the include and source path. Sets have_gtest=yes if the source is
26# present. Sets GTEST_CPPFLAGS and GTEST_SOURCE to the preprocessor flags and
27# source location respectively.
28AC_DEFUN([_CHECK_GTEST],
29[
30 AC_ARG_WITH([gtest-source-path],
31 [AS_HELP_STRING([--with-gtest-source-path],
32 [location of the Google test sources, defaults to /usr/src/gtest])],
33 [GTEST_SOURCE="$withval"; GTEST_CPPFLAGS="-I$withval/include"],
34 [GTEST_SOURCE="/usr/src/gtest"])
35
36 AC_ARG_WITH([gtest-include-path],
37 [AS_HELP_STRING([--with-gtest-include-path],
38 [location of the Google test headers])],
39 [GTEST_CPPFLAGS="-I$withval"])
40
41 GTEST_CPPFLAGS="$GTEST_CPPFLAGS -I$GTEST_SOURCE"
42
43 AC_CHECK_FILES([$GTEST_SOURCE/src/gtest-all.cc]
44 [$GTEST_SOURCE/src/gtest_main.cc],
45 [have_gtest=yes],
46 [have_gtest=no])
47
48 AS_IF([test "x$have_gtest_source" = xyes],
49 [AC_SUBST(GTEST_CPPFLAGS)]
50 [AC_SUBST(GTEST_SOURCE)])
51]) # _CHECK_GTEST
52
53# CHECK_XORG_GTEST([ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND])24# CHECK_XORG_GTEST([ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND])
54#25#
55# Checks whether the xorg-gtest source is available on the system. Allows for26# Checks whether the xorg-gtest source is available on the system. Allows for
@@ -61,7 +32,7 @@
61# Both default actions are no-ops.32# Both default actions are no-ops.
62AC_DEFUN([CHECK_XORG_GTEST],33AC_DEFUN([CHECK_XORG_GTEST],
63[34[
64 AC_REQUIRE([_CHECK_GTEST])35 AC_REQUIRE([CHECK_GTEST])
6536
66 PKG_CHECK_EXISTS([xorg-gtest],37 PKG_CHECK_EXISTS([xorg-gtest],
67 [have_xorg_gtest=yes],38 [have_xorg_gtest=yes],
6839
=== modified file 'src/handle.cpp'
--- src/handle.cpp 2012-11-20 20:13:00 +0000
+++ src/handle.cpp 2013-03-25 13:49:07 +0000
@@ -30,9 +30,6 @@
30#include <stdexcept>30#include <stdexcept>
3131
32#include <oif/frame.h>32#include <oif/frame.h>
33#ifdef FRAME_X11_BACKEND
34 #include <oif/frame_x11.h>
35#endif
3633
37#include "atomic-recognizer.h"34#include "atomic-recognizer.h"
38#include "event.h"35#include "event.h"
@@ -154,9 +151,7 @@
154 if (frame_touch_get_state(touch) != UFTouchStateBegin)151 if (frame_touch_get_state(touch) != UFTouchStateBegin)
155 continue;152 continue;
156153
157#ifdef FRAME_X11_BACKEND154 frame_reject_touch(device, window_id, frame_touch_get_id(touch));
158 frame_x11_reject_touch(device, window_id, frame_touch_get_id(touch));
159#endif
160 }155 }
161}156}
162157
163158
=== modified file 'src/touch.cpp'
--- src/touch.cpp 2012-11-20 20:13:00 +0000
+++ src/touch.cpp 2013-03-25 13:49:07 +0000
@@ -20,10 +20,6 @@
2020
21#include "touch.h"21#include "touch.h"
2222
23#ifdef FRAME_X11_BACKEND
24 #include <oif/frame_x11.h>
25#endif
26
27#include "log.h"23#include "log.h"
2824
29namespace oif {25namespace oif {
@@ -73,10 +69,8 @@
7369
74void Touch::Accept() {70void Touch::Accept() {
75 LOG(Dbg) << "accepting touch " << id_ << "\n";71 LOG(Dbg) << "accepting touch " << id_ << "\n";
76#ifdef FRAME_X11_BACKEND72 if (frame_accept_touch(device_, window_id_, id_) != UFStatusSuccess)
77 if (frame_x11_accept_touch(device_, window_id_, id_) != UFStatusSuccess)
78 LOG(Err) << "touch " << id_ << " failed to be accepted\n";73 LOG(Err) << "touch " << id_ << " failed to be accepted\n";
79#endif
8074
81 accepted_ = true;75 accepted_ = true;
82}76}
@@ -84,10 +78,8 @@
84Touch::~Touch() {78Touch::~Touch() {
85 if (!accepted_) {79 if (!accepted_) {
86 LOG(Dbg) << "rejecting touch " << id_ << "\n";80 LOG(Dbg) << "rejecting touch " << id_ << "\n";
87#ifdef FRAME_X11_BACKEND81 if (frame_reject_touch(device_, window_id_, id_) != UFStatusSuccess)
88 if (frame_x11_reject_touch(device_, window_id_, id_) != UFStatusSuccess)
89 LOG(Err) << "touch " << id_ << " failed to be rejected\n";82 LOG(Err) << "touch " << id_ << " failed to be rejected\n";
90#endif
91 }83 }
92}84}
9385
9486
=== modified file 'test/integration/device.cpp'
--- test/integration/device.cpp 2012-07-24 21:52:37 +0000
+++ test/integration/device.cpp 2013-03-25 13:49:07 +0000
@@ -5,9 +5,8 @@
5 * Copyright (C) 2012 Canonical Ltd.5 * Copyright (C) 2012 Canonical Ltd.
6 *6 *
7 * This program is free software: you can redistribute it and/or modify it7 * This program is free software: you can redistribute it and/or modify it
8 * under the terms of the GNU General Public License as published by the8 * under the terms of version 3 of the GNU General Public License as published
9 * Free Software Foundation, either version 3 of the License, or (at your9 * by the Free Software Foundation.
10 * option) any later version.
11 *10 *
12 * This program is distributed in the hope that it will be useful, but11 * This program is distributed in the hope that it will be useful, but
13 * WITHOUT ANY WARRANTY; without even the implied warranty of12 * WITHOUT ANY WARRANTY; without even the implied warranty of
1413
=== modified file 'test/integration/device.h'
--- test/integration/device.h 2012-07-24 21:52:37 +0000
+++ test/integration/device.h 2013-03-25 13:49:07 +0000
@@ -5,9 +5,8 @@
5 * Copyright (C) 2012 Canonical Ltd.5 * Copyright (C) 2012 Canonical Ltd.
6 *6 *
7 * This program is free software: you can redistribute it and/or modify it7 * This program is free software: you can redistribute it and/or modify it
8 * under the terms of the GNU General Public License as published by the8 * under the terms of version 3 of the GNU General Public License as published
9 * Free Software Foundation, either version 3 of the License, or (at your9 * by the Free Software Foundation.
10 * option) any later version.
11 *10 *
12 * This program is distributed in the hope that it will be useful, but11 * This program is distributed in the hope that it will be useful, but
13 * WITHOUT ANY WARRANTY; without even the implied warranty of12 * WITHOUT ANY WARRANTY; without even the implied warranty of
1413
=== modified file 'test/integration/events.h'
--- test/integration/events.h 2012-07-24 21:52:37 +0000
+++ test/integration/events.h 2013-03-25 13:49:07 +0000
@@ -5,9 +5,8 @@
5 * Copyright (C) 2012 Canonical Ltd.5 * Copyright (C) 2012 Canonical Ltd.
6 *6 *
7 * This program is free software: you can redistribute it and/or modify it7 * This program is free software: you can redistribute it and/or modify it
8 * under the terms of the GNU General Public License as published by the8 * under the terms of version 3 of the GNU General Public License as published
9 * Free Software Foundation, either version 3 of the License, or (at your9 * by the Free Software Foundation.
10 * option) any later version.
11 *10 *
12 * This program is distributed in the hope that it will be useful, but11 * This program is distributed in the hope that it will be useful, but
13 * WITHOUT ANY WARRANTY; without even the implied warranty of12 * WITHOUT ANY WARRANTY; without even the implied warranty of
1413
=== modified file 'test/integration/recording.cpp'
--- test/integration/recording.cpp 2012-07-24 21:52:37 +0000
+++ test/integration/recording.cpp 2013-03-25 13:49:07 +0000
@@ -5,9 +5,8 @@
5 * Copyright (C) 2012 Canonical Ltd.5 * Copyright (C) 2012 Canonical Ltd.
6 *6 *
7 * This program is free software: you can redistribute it and/or modify it7 * This program is free software: you can redistribute it and/or modify it
8 * under the terms of the GNU General Public License as published by the8 * under the terms of version 3 of the GNU General Public License as published
9 * Free Software Foundation, either version 3 of the License, or (at your9 * by the Free Software Foundation.
10 * option) any later version.
11 *10 *
12 * This program is distributed in the hope that it will be useful, but11 * This program is distributed in the hope that it will be useful, but
13 * WITHOUT ANY WARRANTY; without even the implied warranty of12 * WITHOUT ANY WARRANTY; without even the implied warranty of
1413
=== modified file 'test/integration/recording.h'
--- test/integration/recording.h 2012-07-24 21:52:37 +0000
+++ test/integration/recording.h 2013-03-25 13:49:07 +0000
@@ -5,9 +5,8 @@
5 * Copyright (C) 2012 Canonical Ltd.5 * Copyright (C) 2012 Canonical Ltd.
6 *6 *
7 * This program is free software: you can redistribute it and/or modify it7 * This program is free software: you can redistribute it and/or modify it
8 * under the terms of the GNU General Public License as published by the8 * under the terms of version 3 of the GNU General Public License as published
9 * Free Software Foundation, either version 3 of the License, or (at your9 * by the Free Software Foundation.
10 * option) any later version.
11 *10 *
12 * This program is distributed in the hope that it will be useful, but11 * This program is distributed in the hope that it will be useful, but
13 * WITHOUT ANY WARRANTY; without even the implied warranty of12 * WITHOUT ANY WARRANTY; without even the implied warranty of
1413
=== modified file 'test/integration/slice-checker.cpp'
--- test/integration/slice-checker.cpp 2012-07-24 21:52:37 +0000
+++ test/integration/slice-checker.cpp 2013-03-25 13:49:07 +0000
@@ -5,9 +5,8 @@
5 * Copyright (C) 2012 Canonical Ltd.5 * Copyright (C) 2012 Canonical Ltd.
6 *6 *
7 * This program is free software: you can redistribute it and/or modify it7 * This program is free software: you can redistribute it and/or modify it
8 * under the terms of the GNU General Public License as published by the8 * under the terms of version 3 of the GNU General Public License as published
9 * Free Software Foundation, either version 3 of the License, or (at your9 * by the Free Software Foundation.
10 * option) any later version.
11 *10 *
12 * This program is distributed in the hope that it will be useful, but11 * This program is distributed in the hope that it will be useful, but
13 * WITHOUT ANY WARRANTY; without even the implied warranty of12 * WITHOUT ANY WARRANTY; without even the implied warranty of
1413
=== modified file 'test/integration/slice-checker.h'
--- test/integration/slice-checker.h 2012-07-24 21:52:37 +0000
+++ test/integration/slice-checker.h 2013-03-25 13:49:07 +0000
@@ -5,9 +5,8 @@
5 * Copyright (C) 2012 Canonical Ltd.5 * Copyright (C) 2012 Canonical Ltd.
6 *6 *
7 * This program is free software: you can redistribute it and/or modify it7 * This program is free software: you can redistribute it and/or modify it
8 * under the terms of the GNU General Public License as published by the8 * under the terms of version 3 of the GNU General Public License as published
9 * Free Software Foundation, either version 3 of the License, or (at your9 * by the Free Software Foundation.
10 * option) any later version.
11 *10 *
12 * This program is distributed in the hope that it will be useful, but11 * This program is distributed in the hope that it will be useful, but
13 * WITHOUT ANY WARRANTY; without even the implied warranty of12 * WITHOUT ANY WARRANTY; without even the implied warranty of
1413
=== modified file 'test/integration/x11/atomic-timeout.cpp'
--- test/integration/x11/atomic-timeout.cpp 2012-06-21 20:30:14 +0000
+++ test/integration/x11/atomic-timeout.cpp 2013-03-25 13:49:07 +0000
@@ -5,9 +5,8 @@
5 * Copyright (C) 2012 Canonical Ltd.5 * Copyright (C) 2012 Canonical Ltd.
6 *6 *
7 * This program is free software: you can redistribute it and/or modify it7 * This program is free software: you can redistribute it and/or modify it
8 * under the terms of the GNU General Public License as published by the8 * under the terms of version 3 of the GNU General Public License as published
9 * Free Software Foundation, either version 3 of the License, or (at your9 * by the Free Software Foundation.
10 * option) any later version.
11 *10 *
12 * This program is distributed in the hope that it will be useful, but11 * This program is distributed in the hope that it will be useful, but
13 * WITHOUT ANY WARRANTY; without even the implied warranty of12 * WITHOUT ANY WARRANTY; without even the implied warranty of
1413
=== modified file 'test/integration/x11/dragthresh.cpp'
--- test/integration/x11/dragthresh.cpp 2012-06-21 20:30:14 +0000
+++ test/integration/x11/dragthresh.cpp 2013-03-25 13:49:07 +0000
@@ -5,9 +5,8 @@
5 * Copyright (C) 2012 Canonical Ltd.5 * Copyright (C) 2012 Canonical Ltd.
6 *6 *
7 * This program is free software: you can redistribute it and/or modify it7 * This program is free software: you can redistribute it and/or modify it
8 * under the terms of the GNU General Public License as published by the8 * under the terms of version 3 of the GNU General Public License as published
9 * Free Software Foundation, either version 3 of the License, or (at your9 * by the Free Software Foundation.
10 * option) any later version.
11 *10 *
12 * This program is distributed in the hope that it will be useful, but11 * This program is distributed in the hope that it will be useful, but
13 * WITHOUT ANY WARRANTY; without even the implied warranty of12 * WITHOUT ANY WARRANTY; without even the implied warranty of
1413
=== modified file 'test/integration/x11/fixture.cpp'
--- test/integration/x11/fixture.cpp 2012-08-27 21:52:42 +0000
+++ test/integration/x11/fixture.cpp 2013-03-25 13:49:07 +0000
@@ -5,9 +5,8 @@
5 * Copyright (C) 2012 Canonical Ltd.5 * Copyright (C) 2012 Canonical Ltd.
6 *6 *
7 * This program is free software: you can redistribute it and/or modify it7 * This program is free software: you can redistribute it and/or modify it
8 * under the terms of the GNU General Public License as published by the8 * under the terms of version 3 of the GNU General Public License as published
9 * Free Software Foundation, either version 3 of the License, or (at your9 * by the Free Software Foundation.
10 * option) any later version.
11 *10 *
12 * This program is distributed in the hope that it will be useful, but11 * This program is distributed in the hope that it will be useful, but
13 * WITHOUT ANY WARRANTY; without even the implied warranty of12 * WITHOUT ANY WARRANTY; without even the implied warranty of
1413
=== modified file 'test/integration/x11/fixture.h'
--- test/integration/x11/fixture.h 2012-06-21 20:30:14 +0000
+++ test/integration/x11/fixture.h 2013-03-25 13:49:07 +0000
@@ -5,9 +5,8 @@
5 * Copyright (C) 2012 Canonical Ltd.5 * Copyright (C) 2012 Canonical Ltd.
6 *6 *
7 * This program is free software: you can redistribute it and/or modify it7 * This program is free software: you can redistribute it and/or modify it
8 * under the terms of the GNU General Public License as published by the8 * under the terms of version 3 of the GNU General Public License as published
9 * Free Software Foundation, either version 3 of the License, or (at your9 * by the Free Software Foundation.
10 * option) any later version.
11 *10 *
12 * This program is distributed in the hope that it will be useful, but11 * This program is distributed in the hope that it will be useful, but
13 * WITHOUT ANY WARRANTY; without even the implied warranty of12 * WITHOUT ANY WARRANTY; without even the implied warranty of
1413
=== modified file 'test/integration/x11/hold-reject.cpp'
--- test/integration/x11/hold-reject.cpp 2012-06-21 20:30:14 +0000
+++ test/integration/x11/hold-reject.cpp 2013-03-25 13:49:07 +0000
@@ -5,9 +5,8 @@
5 * Copyright (C) 2012 Canonical Ltd.5 * Copyright (C) 2012 Canonical Ltd.
6 *6 *
7 * This program is free software: you can redistribute it and/or modify it7 * This program is free software: you can redistribute it and/or modify it
8 * under the terms of the GNU General Public License as published by the8 * under the terms of version 3 of the GNU General Public License as published
9 * Free Software Foundation, either version 3 of the License, or (at your9 * by the Free Software Foundation.
10 * option) any later version.
11 *10 *
12 * This program is distributed in the hope that it will be useful, but11 * This program is distributed in the hope that it will be useful, but
13 * WITHOUT ANY WARRANTY; without even the implied warranty of12 * WITHOUT ANY WARRANTY; without even the implied warranty of
1413
=== modified file 'test/integration/x11/no-premature-gestures.cpp'
--- test/integration/x11/no-premature-gestures.cpp 2012-07-24 16:04:18 +0000
+++ test/integration/x11/no-premature-gestures.cpp 2013-03-25 13:49:07 +0000
@@ -5,9 +5,8 @@
5 * Copyright (C) 2012 Canonical Ltd.5 * Copyright (C) 2012 Canonical Ltd.
6 *6 *
7 * This program is free software: you can redistribute it and/or modify it7 * This program is free software: you can redistribute it and/or modify it
8 * under the terms of the GNU General Public License as published by the8 * under the terms of version 3 of the GNU General Public License as published
9 * Free Software Foundation, either version 3 of the License, or (at your9 * by the Free Software Foundation.
10 * option) any later version.
11 *10 *
12 * This program is distributed in the hope that it will be useful, but11 * This program is distributed in the hope that it will be useful, but
13 * WITHOUT ANY WARRANTY; without even the implied warranty of12 * WITHOUT ANY WARRANTY; without even the implied warranty of
1413
=== modified file 'test/integration/x11/no-tap-after-drag.cpp'
--- test/integration/x11/no-tap-after-drag.cpp 2012-07-24 16:04:18 +0000
+++ test/integration/x11/no-tap-after-drag.cpp 2013-03-25 13:49:07 +0000
@@ -5,9 +5,8 @@
5 * Copyright (C) 2012 Canonical Ltd.5 * Copyright (C) 2012 Canonical Ltd.
6 *6 *
7 * This program is free software: you can redistribute it and/or modify it7 * This program is free software: you can redistribute it and/or modify it
8 * under the terms of the GNU General Public License as published by the8 * under the terms of version 3 of the GNU General Public License as published
9 * Free Software Foundation, either version 3 of the License, or (at your9 * by the Free Software Foundation.
10 * option) any later version.
11 *10 *
12 * This program is distributed in the hope that it will be useful, but11 * This program is distributed in the hope that it will be useful, but
13 * WITHOUT ANY WARRANTY; without even the implied warranty of12 * WITHOUT ANY WARRANTY; without even the implied warranty of
1413
=== modified file 'test/integration/x11/parallel-atomic-gestures.cpp'
--- test/integration/x11/parallel-atomic-gestures.cpp 2012-06-21 20:30:14 +0000
+++ test/integration/x11/parallel-atomic-gestures.cpp 2013-03-25 13:49:07 +0000
@@ -5,9 +5,8 @@
5 * Copyright (C) 2012 Canonical Ltd.5 * Copyright (C) 2012 Canonical Ltd.
6 *6 *
7 * This program is free software: you can redistribute it and/or modify it7 * This program is free software: you can redistribute it and/or modify it
8 * under the terms of the GNU General Public License as published by the8 * under the terms of version 3 of the GNU General Public License as published
9 * Free Software Foundation, either version 3 of the License, or (at your9 * by the Free Software Foundation.
10 * option) any later version.
11 *10 *
12 * This program is distributed in the hope that it will be useful, but11 * This program is distributed in the hope that it will be useful, but
13 * WITHOUT ANY WARRANTY; without even the implied warranty of12 * WITHOUT ANY WARRANTY; without even the implied warranty of
1413
=== modified file 'test/integration/x11/tap-touch-accept.cpp'
--- test/integration/x11/tap-touch-accept.cpp 2012-06-21 20:30:14 +0000
+++ test/integration/x11/tap-touch-accept.cpp 2013-03-25 13:49:07 +0000
@@ -5,9 +5,8 @@
5 * Copyright (C) 2012 Canonical Ltd.5 * Copyright (C) 2012 Canonical Ltd.
6 *6 *
7 * This program is free software: you can redistribute it and/or modify it7 * This program is free software: you can redistribute it and/or modify it
8 * under the terms of the GNU General Public License as published by the8 * under the terms of version 3 of the GNU General Public License as published
9 * Free Software Foundation, either version 3 of the License, or (at your9 * by the Free Software Foundation.
10 * option) any later version.
11 *10 *
12 * This program is distributed in the hope that it will be useful, but11 * This program is distributed in the hope that it will be useful, but
13 * WITHOUT ANY WARRANTY; without even the implied warranty of12 * WITHOUT ANY WARRANTY; without even the implied warranty of
1413
=== modified file 'test/integration/x11/timeout.cpp'
--- test/integration/x11/timeout.cpp 2012-06-21 20:30:14 +0000
+++ test/integration/x11/timeout.cpp 2013-03-25 13:49:07 +0000
@@ -5,9 +5,8 @@
5 * Copyright (C) 2012 Canonical Ltd.5 * Copyright (C) 2012 Canonical Ltd.
6 *6 *
7 * This program is free software: you can redistribute it and/or modify it7 * This program is free software: you can redistribute it and/or modify it
8 * under the terms of the GNU General Public License as published by the8 * under the terms of version 3 of the GNU General Public License as published
9 * Free Software Foundation, either version 3 of the License, or (at your9 * by the Free Software Foundation.
10 * option) any later version.
11 *10 *
12 * This program is distributed in the hope that it will be useful, but11 * This program is distributed in the hope that it will be useful, but
13 * WITHOUT ANY WARRANTY; without even the implied warranty of12 * WITHOUT ANY WARRANTY; without even the implied warranty of
1413
=== modified file 'test/integration/x11/twodrag.cpp'
--- test/integration/x11/twodrag.cpp 2012-06-21 20:30:14 +0000
+++ test/integration/x11/twodrag.cpp 2013-03-25 13:49:07 +0000
@@ -5,9 +5,8 @@
5 * Copyright (C) 2012 Canonical Ltd.5 * Copyright (C) 2012 Canonical Ltd.
6 *6 *
7 * This program is free software: you can redistribute it and/or modify it7 * This program is free software: you can redistribute it and/or modify it
8 * under the terms of the GNU General Public License as published by the8 * under the terms of version 3 of the GNU General Public License as published
9 * Free Software Foundation, either version 3 of the License, or (at your9 * by the Free Software Foundation.
10 * option) any later version.
11 *10 *
12 * This program is distributed in the hope that it will be useful, but11 * This program is distributed in the hope that it will be useful, but
13 * WITHOUT ANY WARRANTY; without even the implied warranty of12 * WITHOUT ANY WARRANTY; without even the implied warranty of
1413
=== modified file 'test/regular/Makefile.am'
--- test/regular/Makefile.am 2012-11-20 20:13:00 +0000
+++ test/regular/Makefile.am 2013-03-25 13:49:07 +0000
@@ -25,8 +25,6 @@
2525
26check_regular_SOURCES = \26check_regular_SOURCES = \
27 grail.cpp \27 grail.cpp \
28 frame_mock.cpp \
29 frame_mock.h \
30 grail-fixture.cpp \28 grail-fixture.cpp \
31 grail-fixture.h \29 grail-fixture.h \
32 intermittent_3touch.cpp \30 intermittent_3touch.cpp \
@@ -43,7 +41,8 @@
43 $(top_builddir)/src/.libs/libgrail.a \41 $(top_builddir)/src/.libs/libgrail.a \
44 $(top_builddir)/test/gtest/libgtest_grail.a \42 $(top_builddir)/test/gtest/libgtest_grail.a \
45 $(COVERAGE_LIBS) \43 $(COVERAGE_LIBS) \
46 $(GTEST_LIBS)44 $(GTEST_LIBS) \
45 $(FRAME_LIBS)
4746
48check_regular_CPPFLAGS = \47check_regular_CPPFLAGS = \
49 --std=c++0x \48 --std=c++0x \
5049
=== removed file 'test/regular/frame_mock.cpp'
--- test/regular/frame_mock.cpp 2012-11-21 13:31:12 +0000
+++ test/regular/frame_mock.cpp 1970-01-01 00:00:00 +0000
@@ -1,254 +0,0 @@
1#include "frame_mock.h"
2
3extern "C" {
4
5/*****************************************************************************
6 * Event
7 *****************************************************************************/
8
9UFEventType frame_event_get_type(UFEvent self)
10{
11 return self->type;
12}
13
14UFStatus frame_event_get_property(UFEvent self, UFEventProperty property,
15 void *value)
16{
17 UFStatus status = UFStatusErrorUnknownProperty;
18
19 if (property == UFEventPropertyFrame && self->frame_ptr)
20 {
21 *((UFFrame*)value) = self->frame_ptr.get();
22 status = UFStatusSuccess;
23 }
24 else if (property == UFEventPropertyDevice && self->device_ptr)
25 {
26 *((UFDevice*)value) = self->device_ptr.get();
27 status = UFStatusSuccess;
28 }
29
30 return status;
31}
32
33uint64_t frame_event_get_time(UFEvent self)
34{
35 return self->time;
36}
37
38void frame_event_ref(UFEvent self)
39{
40 ++self->ref_count;
41}
42
43void frame_event_unref(UFEvent self)
44{
45 --self->ref_count;
46
47 if (self->ref_count == 0)
48 delete self;
49}
50
51/*****************************************************************************
52 * Frame
53 *****************************************************************************/
54
55UFStatus frame_frame_get_touch_by_index(UFFrame self, unsigned int index,
56 UFTouch *touch)
57{
58 UFStatus status;
59
60 if (index < self->touches.size())
61 {
62 *touch = &(self->touches[index]);
63 status = UFStatusSuccess;
64 }
65 else
66 {
67 status = UFStatusErrorInvalidTouch;
68 }
69
70 return status;
71}
72
73UFStatus frame_frame_get_touch_by_id(UFFrame self, UFTouchId touch_id,
74 UFTouch* touch_pointer)
75{
76 UFStatus status = UFStatusErrorInvalidTouch;
77
78 for (struct UFTouch_ &touch : self->touches)
79 {
80 if (touch.id == touch_id)
81 {
82 *touch_pointer = &touch;
83 status = UFStatusSuccess;
84 break;
85 }
86 }
87
88 return status;
89}
90
91uint32_t frame_frame_get_num_touches(UFFrame self)
92{
93 return self->touches.size();
94}
95
96UFDevice frame_frame_get_device(UFFrame self)
97{
98 return self->device_ptr.get();
99}
100
101UFWindowId frame_frame_get_window_id(UFFrame self)
102{
103 return self->window_id;
104}
105
106/*****************************************************************************
107 * Touch
108 *****************************************************************************/
109
110UFStatus frame_touch_get_property(UFTouch self, UFTouchProperty property,
111 void *value)
112{
113 UFStatus status;
114
115 switch (property)
116 {
117 case UFTouchPropertyOwned:
118 *((int*)value) = self->owned;
119 status = UFStatusSuccess;
120 break;
121
122 case UFTouchPropertyPendingEnd:
123 *((int*)value) = self->pending_end;
124 status = UFStatusSuccess;
125 break;
126
127 default:
128 status = UFStatusErrorUnknownProperty;
129 }
130
131 return status;
132}
133
134UFTouchId frame_touch_get_id(UFTouch self)
135{
136 return self->id;
137}
138
139UFTouchState frame_touch_get_state(UFTouch self)
140{
141 return self->state;
142}
143
144float frame_touch_get_window_x(UFTouch self)
145{
146 return self->window_x;
147}
148
149float frame_touch_get_window_y(UFTouch self)
150{
151 return self->window_y;
152}
153
154float frame_touch_get_device_x(UFTouch self)
155{
156 return self->device_x;
157}
158
159float frame_touch_get_device_y(UFTouch self)
160{
161 return self->device_y;
162}
163
164uint64_t frame_touch_get_time(UFTouch self)
165{
166 return self->time;
167}
168
169uint64_t frame_touch_get_start_time(UFTouch self)
170{
171 return self->start_time;
172}
173
174/*****************************************************************************
175 * Device
176 *****************************************************************************/
177
178UFStatus frame_device_get_property(UFDevice self, UFDeviceProperty property,
179 void *value)
180{
181 UFStatus status;
182
183 switch (property)
184 {
185 case UFDevicePropertyDirect:
186 *((int*)value) = self->direct;
187 status = UFStatusSuccess;
188 break;
189
190 default:
191 status = UFStatusErrorUnknownProperty;
192 }
193
194 return status;
195}
196
197UFStatus frame_device_get_axis_by_type(UFDevice self, UFAxisType axis_type,
198 UFAxis *axis_pointer)
199{
200 UFStatus status = UFStatusErrorInvalidAxis;
201
202 for (struct UFAxis_ &axis : self->axes)
203 {
204 if (axis.type == axis_type)
205 {
206 *axis_pointer = &axis;
207 status = UFStatusSuccess;
208 break;
209 }
210 }
211
212 return status;
213}
214
215float frame_device_get_window_resolution_x(UFDevice self)
216{
217 return self->window_resolution_x;
218}
219
220float frame_device_get_window_resolution_y(UFDevice self)
221{
222 return self->window_resolution_y;
223}
224
225/*****************************************************************************
226 * Axis
227 *****************************************************************************/
228
229float frame_axis_get_resolution(UFAxis self)
230{
231 return self->resolution;
232}
233
234/*****************************************************************************
235 * Frame X11
236 *****************************************************************************/
237
238#ifdef FRAME_X11_BACKEND
239UFStatus frame_x11_accept_touch(UFDevice device, UFWindowId window,
240 UFTouchId touch_id)
241{
242 device->x11_touch_acceptance[window][touch_id] = true;
243 return UFStatusSuccess;
244}
245
246UFStatus frame_x11_reject_touch(UFDevice device, UFWindowId window,
247 UFTouchId touch_id)
248{
249 device->x11_touch_acceptance[window][touch_id] = false;
250 return UFStatusSuccess;
251}
252#endif // FRAME_X11_BACKEND
253
254} // extern "C"
2550
=== removed file 'test/regular/frame_mock.h'
--- test/regular/frame_mock.h 2012-11-21 13:31:12 +0000
+++ test/regular/frame_mock.h 1970-01-01 00:00:00 +0000
@@ -1,66 +0,0 @@
1#ifndef FRAME_MOCK_H
2#define FRAME_MOCK_H
3
4#include <oif/frame.h>
5#include <map>
6#include <vector>
7#include <memory>
8
9extern "C" {
10
11struct UFHandle_
12{
13 int fd;
14};
15
16struct UFEvent_
17{
18 UFEvent_() {ref_count = 1;}
19 UFEventType type;
20 std::shared_ptr<struct UFDevice_> device_ptr;
21 std::unique_ptr<struct UFFrame_> frame_ptr;
22 uint64_t time;
23 int ref_count;
24};
25
26struct UFFrame_
27{
28 std::shared_ptr<struct UFDevice_> device_ptr;
29 UFWindowId window_id;
30 std::vector<struct UFTouch_> touches;
31};
32
33struct UFTouch_
34{
35 UFTouchId id;
36 UFTouchState state;
37 float window_x;
38 float window_y;
39 float device_x;
40 float device_y;
41 uint64_t time;
42 uint64_t start_time;
43 int owned;
44 int pending_end;
45};
46
47struct UFDevice_
48{
49 int direct;
50 std::vector<struct UFAxis_> axes;
51 float window_resolution_x;
52 float window_resolution_y;
53#ifdef FRAME_X11_BACKEND
54 std::map<UFWindowId, std::map<UFTouchId, bool> > x11_touch_acceptance;
55#endif
56};
57
58struct UFAxis_
59{
60 UFAxisType type;
61 float resolution;
62};
63
64} // extern "C"
65
66#endif
670
=== modified file 'test/regular/grail-fixture.cpp'
--- test/regular/grail-fixture.cpp 2012-07-23 13:11:21 +0000
+++ test/regular/grail-fixture.cpp 2013-03-25 13:49:07 +0000
@@ -1,72 +1,58 @@
1#include "grail-fixture.h"1#include "grail-fixture.h"
22
3void GrailTest::SendFrameEvent(3void GrailTest::SendFrameEvent(uint64_t time, UFBackendFrame frame)
4 uint64_t time,4{
5 UFWindowId window_id,5 UFEvent event = frame_event_new();
6 const struct UFTouch_ &touch_struct)6 frame_event_set_type(event, UFEventTypeFrame);
7{7 frame_event_set_frame(event, frame);
8 std::vector<struct UFTouch_> touches;8 frame_event_set_time(event, time);
9 touches.push_back(touch_struct);9
10 SendFrameEvent(time, window_id, touches);10 grail_process_frame_event(grail_handle, event);
11}11 frame_event_unref(event);
1212 event = nullptr;
13void GrailTest::SendFrameEvent(13
14 uint64_t time,14 if (previous_frame_)
15 UFWindowId window_id,15 frame_backend_frame_delete(previous_frame_);
16 std::vector<struct UFTouch_> &touches)16 previous_frame_ = frame;
17{
18 UFFrame frame = new struct UFFrame_;
19 frame->device_ptr = device_ptr;
20 frame->window_id = window_id;
21 frame->touches = touches;
22
23 UFEvent frame_event = new struct UFEvent_;
24 frame_event->type = UFEventTypeFrame;
25 frame_event->time = time;
26 frame_event->frame_ptr.reset(std::move(frame));
27
28 grail_process_frame_event(grail_handle, frame_event);
29 frame_event_unref(frame_event);
30 frame_event = nullptr;
31}17}
3218
33void GrailTest::SendDeviceAddedEvent(uint64_t time)19void GrailTest::SendDeviceAddedEvent(uint64_t time)
34{20{
35 UFEvent frame_event = new struct UFEvent_;21 UFEvent event = frame_event_new();
36 frame_event->type = UFEventTypeDeviceAdded;22 frame_event_set_type(event, UFEventTypeDeviceAdded);
37 frame_event->time = time;23 frame_event_set_time(event, time);
38 frame_event->device_ptr = device_ptr;24 frame_event_set_device(event, device_);
3925
40 grail_process_frame_event(grail_handle, frame_event);26 grail_process_frame_event(grail_handle, event);
41 frame_event_unref(frame_event);27 frame_event_unref(event);
42 frame_event = nullptr;28 event = nullptr;
43}29}
4430
45void GrailTest::FillFakeDeviceStruct()31void GrailTest::CreateFakeDevice()
46{32{
47 struct UFAxis_ axis_x_struct;33 device_ = frame_backend_device_new();
48 axis_x_struct.type = UFAxisTypeX;34
49 axis_x_struct.resolution = 3764.70;35 frame_backend_device_add_axis(device_,
5036 UFAxisTypeX,
51 struct UFAxis_ axis_y_struct;37 0, 10000, 3764.70);
52 axis_y_struct.type = UFAxisTypeY;38
53 axis_y_struct.resolution = 3764.70;39 frame_backend_device_add_axis(device_,
5440 UFAxisTypeY,
55 device_ptr.reset(new struct UFDevice_);41 0, 10000, 3764.70);
56 device_ptr->direct = 1;42
57 device_ptr->axes.push_back(axis_x_struct);43 frame_backend_device_set_direct(device_, 1);
58 device_ptr->axes.push_back(axis_y_struct);44
59 /* pixels/m */45 /* pixels/m */
60 device_ptr->window_resolution_x = 3764.70;46 frame_backend_device_set_window_resolution(device_, 3764.70, 3764.70);
61 device_ptr->window_resolution_y = 3764.70;
62}47}
6348
64UGSubscription GrailTest::CreateSubscription(49UGSubscription GrailTest::CreateSubscription(
65 unsigned int num_touches, UGGestureTypeMask gesture_mask,50 unsigned int num_touches, UGGestureTypeMask gesture_mask,
66 UFDevice device, UFWindowId window_id)51 UFWindowId window_id)
67{52{
68 UGStatus status;53 UGStatus status;
69 UGSubscription subscription = nullptr;54 UGSubscription subscription = nullptr;
55 UFDevice uf_device = frame_backend_device_get_device(device_);
7056
71 status = grail_subscription_new(&subscription);57 status = grail_subscription_new(&subscription);
72 if (status != UGStatusSuccess)58 if (status != UGStatusSuccess)
@@ -77,7 +63,7 @@
7763
78 status = grail_subscription_set_property(subscription,64 status = grail_subscription_set_property(subscription,
79 UGSubscriptionPropertyDevice,65 UGSubscriptionPropertyDevice,
80 &device);66 &uf_device);
81 if (status != UGStatusSuccess)67 if (status != UGStatusSuccess)
82 {68 {
83 ADD_FAILURE() << "failed to set device subscription";69 ADD_FAILURE() << "failed to set device subscription";
@@ -150,75 +136,111 @@
150 BeginTouchWindowCoords(touch_id, touch_id * 10.0f, 0.0f);136 BeginTouchWindowCoords(touch_id, touch_id * 10.0f, 0.0f);
151}137}
152138
139namespace
140{
141void IncrementFrameActiveTouches(UFBackendFrame frame_backend)
142{
143 UFFrame frame = frame_backend_frame_get_frame(frame_backend);
144 unsigned int active_touches;
145 frame_frame_get_property(frame, UFFramePropertyActiveTouches, &active_touches);
146 frame_backend_frame_set_active_touches(frame_backend, active_touches + 1);
147}
148
149} // anonymous namespace
150
153void GrailTest::BeginTouchWindowCoords(int touch_id, float window_x, float window_y)151void GrailTest::BeginTouchWindowCoords(int touch_id, float window_x, float window_y)
154{152{
155 struct UFTouch_ touch_struct;153 UFBackendTouch touch = frame_backend_touch_new();
156 touch_struct.id = touch_id;154 frame_backend_touch_set_id(touch, touch_id);
157 touch_struct.state = UFTouchStateBegin;155 frame_backend_touch_set_time(touch, time);
158 touch_struct.time = time;156 frame_backend_touch_set_start_time(touch, time);
159 touch_struct.start_time = touch_struct.time;157 frame_backend_touch_set_window_pos(touch, window_x, window_y);
160 touch_struct.window_x = window_x;158 frame_backend_touch_set_owned(touch, 0);
161 touch_struct.window_y = window_y;159 frame_backend_touch_set_pending_end(touch, 0);
162 touch_struct.owned = 0;160
163 touch_struct.pending_end = 0;161 UFBackendFrame frame;
164162 if (previous_frame_)
165 touches.push_back(touch_struct);163 frame = frame_backend_frame_create_next(previous_frame_);
166164 else
167 SendFrameEvent(time, fake_window_id, touches);165 frame = frame_backend_frame_new();
168166
169 // leave it in a neutral state for next uses of touches vector167 frame_backend_frame_set_device(frame, device_);
170 touches[touches.size()-1].state = UFTouchStateUpdate;168
169 frame_backend_frame_give_touch(frame, &touch);
170 IncrementFrameActiveTouches(frame);
171 frame_backend_frame_set_window_id(frame, fake_window_id);
172
173 SendFrameEvent(time, frame);
171}174}
172175
173void GrailTest::GiveTouchOwnership(int touch_id)176void GrailTest::GiveTouchOwnership(int touch_id)
174{177{
175 auto iterator = FindTouch(touch_id);178 std::function<void(UFBackendTouch)> update_func =
176 iterator->state = UFTouchStateUpdate;179 [](UFBackendTouch touch)
177 iterator->owned = 1; // ownership will trigger delivery of grail events.180 {
178 iterator->time = time;181 frame_backend_touch_set_owned(touch, 1);
179182 };
180 SendFrameEvent(time, fake_window_id, touches);183
181}184 UpdateTouch(touch_id, update_func);
182185}
183void GrailTest::SetTouchWindowCoords(int touch_id, float window_x, float window_y)186
184{187void GrailTest::UpdateTouch(int touch_id,
185 auto iterator = FindTouch(touch_id);188 std::function< void(UFBackendTouch) >& update_func)
186 iterator->window_x = window_x;189{
187 iterator->window_y = window_y;190 assert(previous_frame_); // error would be in the test itself
188}191
189192 UFBackendFrame frame = frame_backend_frame_create_next(previous_frame_);
190void GrailTest::UpdateTouches()193 frame_backend_frame_set_device(frame, device_);
191{194 frame_backend_frame_set_window_id(frame, fake_window_id);
192 for (struct UFTouch_ &touch : touches)195
193 {196 UFStatus status;
194 touch.time = time;197 UFBackendTouch touch;
195 }198 status = frame_backend_frame_borrow_touch_by_id(frame, touch_id, &touch);
196 SendFrameEvent(time, fake_window_id, touches);199 ASSERT_EQ(UFStatusSuccess, status);
200
201 update_func(touch);
202 frame_backend_touch_set_time(touch, time);
203
204 status = frame_backend_frame_give_touch(frame, &touch);
205 ASSERT_EQ(UFStatusSuccess, status);
206
207 SendFrameEvent(time, frame);
208}
209
210void GrailTest::SetTouchWindowCoords(UFBackendFrame frame,
211 int touch_id, float window_x, float window_y)
212{
213 UFStatus status;
214 UFBackendTouch touch;
215 status = frame_backend_frame_borrow_touch_by_id(frame, touch_id, &touch);
216 ASSERT_EQ(UFStatusSuccess, status);
217
218 frame_backend_touch_set_window_pos(touch, window_x, window_y);
219
220 status = frame_backend_frame_give_touch(frame, &touch);
221 ASSERT_EQ(UFStatusSuccess, status);
222}
223
224void GrailTest::SendTouchPendingEnd(int touch_id)
225{
226 std::function<void(UFBackendTouch)> update_func =
227 [](UFBackendTouch touch)
228 {
229 frame_backend_touch_set_pending_end(touch, 1);
230 };
231
232 UpdateTouch(touch_id, update_func);
197}233}
198234
199void GrailTest::EndTouch(int touch_id)235void GrailTest::EndTouch(int touch_id)
200{236{
201 auto iterator = FindTouch(touch_id);237 std::function<void(UFBackendTouch)> update_func =
202 iterator->state = UFTouchStateEnd;238 [](UFBackendTouch touch)
203 iterator->time = time;239 {
204240 frame_backend_touch_set_ended(touch);
205 SendFrameEvent(time, fake_window_id, touches);241 };
206242
207 touches.erase(iterator);243 UpdateTouch(touch_id, update_func);
208}
209
210std::vector<struct UFTouch_>::iterator GrailTest::FindTouch(unsigned int touch_id)
211{
212 std::vector<struct UFTouch_>::iterator it = touches.begin();
213
214 while (it != touches.end())
215 {
216 if (it->id == touch_id)
217 return it;
218 ++it;
219 }
220
221 return it;
222}244}
223245
224void GrailTest::ProcessGrailEvents()246void GrailTest::ProcessGrailEvents()
225247
=== modified file 'test/regular/grail-fixture.h'
--- test/regular/grail-fixture.h 2012-08-27 21:52:42 +0000
+++ test/regular/grail-fixture.h 2013-03-25 13:49:07 +0000
@@ -3,8 +3,9 @@
33
4#include <gtest/gtest.h>4#include <gtest/gtest.h>
5#include <oif/grail.h>5#include <oif/grail.h>
6#include "frame_mock.h"6#include <oif/frame_backend.h>
77
8#include <functional>
8#include <list>9#include <list>
9#include <set>10#include <set>
1011
@@ -27,41 +28,38 @@
27 virtual void SetUp()28 virtual void SetUp()
28 {29 {
29 grail_handle = NULL;30 grail_handle = NULL;
30 FillFakeDeviceStruct();31 previous_frame_ = nullptr;
32 CreateFakeDevice();
31 }33 }
3234
33 virtual void TearDown()35 virtual void TearDown()
34 {36 {
35 if (grail_handle)37 if (grail_handle)
36 grail_delete(grail_handle);38 grail_delete(grail_handle);
39
40 if (previous_frame_)
41 frame_backend_frame_delete(previous_frame_);
42
43 frame_backend_device_delete(device_);
37 }44 }
3845
39 protected:46 protected:
4047
41 UGSubscription CreateSubscription(unsigned int num_touches,48 UGSubscription CreateSubscription(unsigned int num_touches,
42 UGGestureTypeMask gesture_mask, UFDevice device, UFWindowId window_id);49 UGGestureTypeMask gesture_mask, UFWindowId window_id);
4350
44 void FillFakeDeviceStruct();51 void CreateFakeDevice();
45 void SendDeviceAddedEvent();
46 void SendFrameEvent(
47 uint64_t time,
48 UFWindowId window_id,
49 const struct UFTouch_ &touch_struct);
50 void SendFrameEvent(
51 uint64_t time,
52 UFWindowId window_id,
53 std::vector<struct UFTouch_> &touches);
54 void SendDeviceAddedEvent(uint64_t time);52 void SendDeviceAddedEvent(uint64_t time);
53 void SendFrameEvent(uint64_t time, UFBackendFrame frame);
5554
56 void BeginTouch(int touch_id);55 void BeginTouch(int touch_id);
57 void BeginTouchWindowCoords(int touch_id, float window_x, float window_y);56 void BeginTouchWindowCoords(int touch_id, float window_x, float window_y);
58 void GiveTouchOwnership(int touch_id);57 void GiveTouchOwnership(int touch_id);
59 void SetTouchWindowCoords(int touch_id, float window_x, float window_y);58 void SetTouchWindowCoords(UFBackendFrame frame,
60 /* Updates the time of all touches in the "touches" vector and sends that vector59 int touch_id, float window_x, float window_y);
61 in a frame event to grail */60 void SendTouchPendingEnd(int touch_id);
62 void UpdateTouches();
63 void EndTouch(int touch_id);61 void EndTouch(int touch_id);
64 std::vector<struct UFTouch_>::iterator FindTouch(unsigned int touch_id);62 void UpdateTouch(int touch_id, std::function< void(UFBackendTouch) >& update_func);
6563
66 /* Fetches and processes all pending grail events, updating grail_gestures64 /* Fetches and processes all pending grail events, updating grail_gestures
67 list accordingly. */65 list accordingly. */
@@ -75,11 +73,11 @@
75 void PrintSlice(UGSlice slice);73 void PrintSlice(UGSlice slice);
7674
77 UGHandle grail_handle;75 UGHandle grail_handle;
78 std::shared_ptr<struct UFDevice_> device_ptr;76 UFBackendDevice device_;
7977
80 uint64_t time;78 uint64_t time;
81 UFWindowId fake_window_id;79 UFWindowId fake_window_id;
82 std::vector<struct UFTouch_> touches;80 UFBackendFrame previous_frame_;
8381
84 /*82 /*
85 A representation of the currently active gestures according to the grail events83 A representation of the currently active gestures according to the grail events
8684
=== modified file 'test/regular/intermittent_3touch.cpp'
--- test/regular/intermittent_3touch.cpp 2012-08-27 21:41:43 +0000
+++ test/regular/intermittent_3touch.cpp 2013-03-25 13:49:07 +0000
@@ -25,7 +25,7 @@
25 SendDeviceAddedEvent(time);25 SendDeviceAddedEvent(time);
2626
27 UGSubscription subscription =27 UGSubscription subscription =
28 CreateSubscription(3, UGGestureTypeTouch, device_ptr.get(), fake_window_id);28 CreateSubscription(3, UGGestureTypeTouch, fake_window_id);
29 if (!subscription) return;29 if (!subscription) return;
3030
31 time = 20531903;31 time = 20531903;
3232
=== modified file 'test/regular/one-touch-gest-finished.cpp'
--- test/regular/one-touch-gest-finished.cpp 2012-08-27 21:41:43 +0000
+++ test/regular/one-touch-gest-finished.cpp 2013-03-25 13:49:07 +0000
@@ -10,7 +10,7 @@
10TEST_F(SingleTouchGestureTest, QuickTapEndsWithConstructionFinished)10TEST_F(SingleTouchGestureTest, QuickTapEndsWithConstructionFinished)
11{11{
12 UGStatus status;12 UGStatus status;
13 UFWindowId fake_window_id = 321;13 fake_window_id = 321;
14 uint64_t time = 1234;14 uint64_t time = 1234;
1515
16 status = grail_new(&grail_handle);16 status = grail_new(&grail_handle);
@@ -19,30 +19,14 @@
19 SendDeviceAddedEvent(time);19 SendDeviceAddedEvent(time);
2020
21 UGSubscription subscription =21 UGSubscription subscription =
22 CreateSubscription(1, UGGestureTypeTouch, device_ptr.get(), fake_window_id);22 CreateSubscription(1, UGGestureTypeTouch, fake_window_id);
23 if (!subscription) return;23 if (!subscription) return;
2424
25 time += 10;25 time += 10;
26 struct UFTouch_ touch_struct;26 BeginTouch(1);
27 touch_struct.id = 1;
28 touch_struct.state = UFTouchStateBegin;
29 touch_struct.window_x = 10.0f;
30 touch_struct.window_y = 10.0f;
31 touch_struct.device_x = 100.0f;
32 touch_struct.device_y = 100.0f;
33 touch_struct.time = time;
34 touch_struct.start_time = touch_struct.time;
35 touch_struct.owned = 0;
36 touch_struct.pending_end = 0;
37
38 SendFrameEvent(time, fake_window_id, touch_struct);
3927
40 time += 10;28 time += 10;
41 touch_struct.state = UFTouchStateUpdate;29 GiveTouchOwnership(1);
42 touch_struct.owned = 1; // ownership will trigger delivery of grail events.
43 touch_struct.time = time;
44
45 SendFrameEvent(time, fake_window_id, touch_struct);
4630
47 // There should now be two grail events, corresponding to the frame31 // There should now be two grail events, corresponding to the frame
48 // event that were sent, waiting to be processed.32 // event that were sent, waiting to be processed.
@@ -80,10 +64,7 @@
80 // now end the touch64 // now end the touch
8165
82 time += 10;66 time += 10;
83 touch_struct.state = UFTouchStateEnd;67 EndTouch(1);
84 touch_struct.time = time;
85
86 SendFrameEvent(time, fake_window_id, touch_struct);
8768
88 // An end event should come and its "construction finished" property should be true69 // An end event should come and its "construction finished" property should be true
8970
9071
=== modified file 'test/regular/pending-end.cpp'
--- test/regular/pending-end.cpp 2012-08-27 21:41:43 +0000
+++ test/regular/pending-end.cpp 2013-03-25 13:49:07 +0000
@@ -18,7 +18,7 @@
1818
19 UGSubscription sub_3touch =19 UGSubscription sub_3touch =
20 CreateSubscription(3, UGGestureTypeTouch | UGGestureTypeDrag | UGGestureTypePinch,20 CreateSubscription(3, UGGestureTypeTouch | UGGestureTypeDrag | UGGestureTypePinch,
21 device_ptr.get(), fake_window_id);21 fake_window_id);
22 ASSERT_NE(nullptr, sub_3touch);22 ASSERT_NE(nullptr, sub_3touch);
2323
24 time = 13688369;24 time = 13688369;
@@ -41,15 +41,17 @@
41 for (int i=1; i<=4; ++i)41 for (int i=1; i<=4; ++i)
42 {42 {
43 time += 100;43 time += 100;
44 SetTouchWindowCoords(1, 30.0f, i*10.0f);44 UFBackendFrame frame = frame_backend_frame_create_next(previous_frame_);
45 SetTouchWindowCoords(2, 40.0f, i*10.0f);45 frame_backend_frame_set_device(frame, device_);
46 SetTouchWindowCoords(3, 50.0f, i*10.0f);46 frame_backend_frame_set_window_id(frame, fake_window_id);
47 UpdateTouches();47 SetTouchWindowCoords(frame, 1, 30.0f, i*10.0f);
48 SetTouchWindowCoords(frame, 2, 40.0f, i*10.0f);
49 SetTouchWindowCoords(frame, 3, 50.0f, i*10.0f);
50 SendFrameEvent(time, frame);
48 }51 }
4952
50 time = 13688877;53 time = 13688877;
51 FindTouch(1)->pending_end = 1;54 SendTouchPendingEnd(1);
52 UpdateTouches();
5355
54 ProcessGrailEvents();56 ProcessGrailEvents();
55 // no gesture slices yet since not all touches are owned57 // no gesture slices yet since not all touches are owned
5658
=== modified file 'test/regular/still-gest-finishes.cpp'
--- test/regular/still-gest-finishes.cpp 2012-08-27 21:41:43 +0000
+++ test/regular/still-gest-finishes.cpp 2013-03-25 13:49:07 +0000
@@ -19,30 +19,14 @@
19 SendDeviceAddedEvent(time);19 SendDeviceAddedEvent(time);
2020
21 UGSubscription subscription =21 UGSubscription subscription =
22 CreateSubscription(1, UGGestureTypeTouch, device_ptr.get(), fake_window_id);22 CreateSubscription(1, UGGestureTypeTouch, fake_window_id);
23 if (!subscription) return;23 if (!subscription) return;
2424
25 time += 10;25 time += 10;
26 struct UFTouch_ touch_struct;26 BeginTouch(1);
27 touch_struct.id = 1;
28 touch_struct.state = UFTouchStateBegin;
29 touch_struct.window_x = 10.0f;
30 touch_struct.window_y = 10.0f;
31 touch_struct.device_x = 100.0f;
32 touch_struct.device_y = 100.0f;
33 touch_struct.time = time;
34 touch_struct.start_time = touch_struct.time;
35 touch_struct.owned = 0;
36 touch_struct.pending_end = 0;
37
38 SendFrameEvent(time, fake_window_id, touch_struct);
3927
40 time += 10;28 time += 10;
41 touch_struct.state = UFTouchStateUpdate;29 GiveTouchOwnership(1); // ownership will trigger delivery of grail events.
42 touch_struct.owned = 1; // ownership will trigger delivery of grail events.
43 touch_struct.time = time;
44
45 SendFrameEvent(time, fake_window_id, touch_struct);
4630
47 // There should now be two grail events, corresponding to the frame31 // There should now be two grail events, corresponding to the frame
48 // event that were sent, waiting to be processed.32 // event that were sent, waiting to be processed.
4933
=== modified file 'tools/common/device.c'
--- tools/common/device.c 2012-06-21 20:30:14 +0000
+++ tools/common/device.c 2013-03-25 13:49:07 +0000
@@ -5,9 +5,8 @@
5 * Copyright (C) 2010-2011 Canonical Ltd.5 * Copyright (C) 2010-2011 Canonical Ltd.
6 *6 *
7 * This program is free software: you can redistribute it and/or modify it7 * This program is free software: you can redistribute it and/or modify it
8 * under the terms of the GNU General Public License as published by the8 * under the terms of version 3 of the GNU General Public License as published
9 * Free Software Foundation, either version 3 of the License, or (at your9 * by the Free Software Foundation.
10 * option) any later version.
11 *10 *
12 * This program is distributed in the hope that it will be useful, but11 * This program is distributed in the hope that it will be useful, but
13 * WITHOUT ANY WARRANTY; without even the implied warranty of12 * WITHOUT ANY WARRANTY; without even the implied warranty of
1413
=== modified file 'tools/common/device.h'
--- tools/common/device.h 2012-06-21 20:30:14 +0000
+++ tools/common/device.h 2013-03-25 13:49:07 +0000
@@ -5,9 +5,8 @@
5 * Copyright (C) 2010-2011 Canonical Ltd.5 * Copyright (C) 2010-2011 Canonical Ltd.
6 *6 *
7 * This program is free software: you can redistribute it and/or modify it7 * This program is free software: you can redistribute it and/or modify it
8 * under the terms of the GNU General Public License as published by the8 * under the terms of version 3 of the GNU General Public License as published
9 * Free Software Foundation, either version 3 of the License, or (at your9 * by the Free Software Foundation.
10 * option) any later version.
11 *10 *
12 * This program is distributed in the hope that it will be useful, but11 * This program is distributed in the hope that it will be useful, but
13 * WITHOUT ANY WARRANTY; without even the implied warranty of12 * WITHOUT ANY WARRANTY; without even the implied warranty of
1413
=== modified file 'tools/common/servertime.c'
--- tools/common/servertime.c 2012-06-21 20:30:14 +0000
+++ tools/common/servertime.c 2013-03-25 13:49:07 +0000
@@ -5,9 +5,8 @@
5 * Copyright (C) 2010-2011 Canonical Ltd.5 * Copyright (C) 2010-2011 Canonical Ltd.
6 *6 *
7 * This program is free software: you can redistribute it and/or modify it7 * This program is free software: you can redistribute it and/or modify it
8 * under the terms of the GNU General Public License as published by the8 * under the terms of version 3 of the GNU General Public License as published
9 * Free Software Foundation, either version 3 of the License, or (at your9 * by the Free Software Foundation.
10 * option) any later version.
11 *10 *
12 * This program is distributed in the hope that it will be useful, but11 * This program is distributed in the hope that it will be useful, but
13 * WITHOUT ANY WARRANTY; without even the implied warranty of12 * WITHOUT ANY WARRANTY; without even the implied warranty of
1413
=== modified file 'tools/common/servertime.h'
--- tools/common/servertime.h 2012-06-21 20:30:14 +0000
+++ tools/common/servertime.h 2013-03-25 13:49:07 +0000
@@ -5,9 +5,8 @@
5 * Copyright (C) 2010-2011 Canonical Ltd.5 * Copyright (C) 2010-2011 Canonical Ltd.
6 *6 *
7 * This program is free software: you can redistribute it and/or modify it7 * This program is free software: you can redistribute it and/or modify it
8 * under the terms of the GNU General Public License as published by the8 * under the terms of version 3 of the GNU General Public License as published
9 * Free Software Foundation, either version 3 of the License, or (at your9 * by the Free Software Foundation.
10 * option) any later version.
11 *10 *
12 * This program is distributed in the hope that it will be useful, but11 * This program is distributed in the hope that it will be useful, but
13 * WITHOUT ANY WARRANTY; without even the implied warranty of12 * WITHOUT ANY WARRANTY; without even the implied warranty of
1413
=== modified file 'tools/common/slice.c'
--- tools/common/slice.c 2012-06-21 20:30:14 +0000
+++ tools/common/slice.c 2013-03-25 13:49:07 +0000
@@ -5,9 +5,8 @@
5 * Copyright (C) 2010-2011 Canonical Ltd.5 * Copyright (C) 2010-2011 Canonical Ltd.
6 *6 *
7 * This program is free software: you can redistribute it and/or modify it7 * This program is free software: you can redistribute it and/or modify it
8 * under the terms of the GNU General Public License as published by the8 * under the terms of version 3 of the GNU General Public License as published
9 * Free Software Foundation, either version 3 of the License, or (at your9 * by the Free Software Foundation.
10 * option) any later version.
11 *10 *
12 * This program is distributed in the hope that it will be useful, but11 * This program is distributed in the hope that it will be useful, but
13 * WITHOUT ANY WARRANTY; without even the implied warranty of12 * WITHOUT ANY WARRANTY; without even the implied warranty of
1413
=== modified file 'tools/common/slice.h'
--- tools/common/slice.h 2012-06-21 20:30:14 +0000
+++ tools/common/slice.h 2013-03-25 13:49:07 +0000
@@ -5,9 +5,8 @@
5 * Copyright (C) 2010-2011 Canonical Ltd.5 * Copyright (C) 2010-2011 Canonical Ltd.
6 *6 *
7 * This program is free software: you can redistribute it and/or modify it7 * This program is free software: you can redistribute it and/or modify it
8 * under the terms of the GNU General Public License as published by the8 * under the terms of version 3 of the GNU General Public License as published
9 * Free Software Foundation, either version 3 of the License, or (at your9 * by the Free Software Foundation.
10 * option) any later version.
11 *10 *
12 * This program is distributed in the hope that it will be useful, but11 * This program is distributed in the hope that it will be useful, but
13 * WITHOUT ANY WARRANTY; without even the implied warranty of12 * WITHOUT ANY WARRANTY; without even the implied warranty of
1413
=== modified file 'tools/grail-test-3-1.c'
--- tools/grail-test-3-1.c 2012-08-27 21:52:42 +0000
+++ tools/grail-test-3-1.c 2013-03-25 13:49:07 +0000
@@ -5,9 +5,8 @@
5 * Copyright (C) 2010-2011 Canonical Ltd.5 * Copyright (C) 2010-2011 Canonical Ltd.
6 *6 *
7 * This program is free software: you can redistribute it and/or modify it7 * This program is free software: you can redistribute it and/or modify it
8 * under the terms of the GNU General Public License as published by the8 * under the terms of version 3 of the GNU General Public License as published
9 * Free Software Foundation, either version 3 of the License, or (at your9 * by the Free Software Foundation.
10 * option) any later version.
11 *10 *
12 * This program is distributed in the hope that it will be useful, but11 * This program is distributed in the hope that it will be useful, but
13 * WITHOUT ANY WARRANTY; without even the implied warranty of12 * WITHOUT ANY WARRANTY; without even the implied warranty of
1413
=== modified file 'tools/grail-test-atomic.c'
--- tools/grail-test-atomic.c 2012-08-27 21:52:42 +0000
+++ tools/grail-test-atomic.c 2013-03-25 13:49:07 +0000
@@ -5,9 +5,8 @@
5 * Copyright (C) 2010-2011 Canonical Ltd.5 * Copyright (C) 2010-2011 Canonical Ltd.
6 *6 *
7 * This program is free software: you can redistribute it and/or modify it7 * This program is free software: you can redistribute it and/or modify it
8 * under the terms of the GNU General Public License as published by the8 * under the terms of version 3 of the GNU General Public License as published
9 * Free Software Foundation, either version 3 of the License, or (at your9 * by the Free Software Foundation.
10 * option) any later version.
11 *10 *
12 * This program is distributed in the hope that it will be useful, but11 * This program is distributed in the hope that it will be useful, but
13 * WITHOUT ANY WARRANTY; without even the implied warranty of12 * WITHOUT ANY WARRANTY; without even the implied warranty of
1413
=== modified file 'tools/grail-test-edge.c'
--- tools/grail-test-edge.c 2012-08-27 21:52:42 +0000
+++ tools/grail-test-edge.c 2013-03-25 13:49:07 +0000
@@ -5,9 +5,8 @@
5 * Copyright (C) 2010-2011 Canonical Ltd.5 * Copyright (C) 2010-2011 Canonical Ltd.
6 *6 *
7 * This program is free software: you can redistribute it and/or modify it7 * This program is free software: you can redistribute it and/or modify it
8 * under the terms of the GNU General Public License as published by the8 * under the terms of version 3 of the GNU General Public License as published
9 * Free Software Foundation, either version 3 of the License, or (at your9 * by the Free Software Foundation.
10 * option) any later version.
11 *10 *
12 * This program is distributed in the hope that it will be useful, but11 * This program is distributed in the hope that it will be useful, but
13 * WITHOUT ANY WARRANTY; without even the implied warranty of12 * WITHOUT ANY WARRANTY; without even the implied warranty of
1413
=== modified file 'tools/grail-test-propagation.c'
--- tools/grail-test-propagation.c 2012-08-27 21:52:42 +0000
+++ tools/grail-test-propagation.c 2013-03-25 13:49:07 +0000
@@ -5,9 +5,8 @@
5 * Copyright (C) 2010-2011 Canonical Ltd.5 * Copyright (C) 2010-2011 Canonical Ltd.
6 *6 *
7 * This program is free software: you can redistribute it and/or modify it7 * This program is free software: you can redistribute it and/or modify it
8 * under the terms of the GNU General Public License as published by the8 * under the terms of version 3 of the GNU General Public License as published
9 * Free Software Foundation, either version 3 of the License, or (at your9 * by the Free Software Foundation.
10 * option) any later version.
11 *10 *
12 * This program is distributed in the hope that it will be useful, but11 * This program is distributed in the hope that it will be useful, but
13 * WITHOUT ANY WARRANTY; without even the implied warranty of12 * WITHOUT ANY WARRANTY; without even the implied warranty of

Subscribers

People subscribed via source and target branches