From 940b4d1848e8c70ab7642901a68594e8016caffc Mon Sep 17 00:00:00 2001 From: Daniel Baumann Date: Sat, 27 Apr 2024 18:51:28 +0200 Subject: Adding upstream version 1:7.0.4. Signed-off-by: Daniel Baumann --- slideshow/qa/debug/colors.sh | 16 +++++++ slideshow/qa/debug/nodetree.sh | 46 ++++++++++++++++++++ slideshow/qa/debug/readme.txt | 19 +++++++++ slideshow/qa/debug/timings.pl | 97 ++++++++++++++++++++++++++++++++++++++++++ 4 files changed, 178 insertions(+) create mode 100644 slideshow/qa/debug/colors.sh create mode 100644 slideshow/qa/debug/nodetree.sh create mode 100644 slideshow/qa/debug/readme.txt create mode 100644 slideshow/qa/debug/timings.pl (limited to 'slideshow/qa/debug') diff --git a/slideshow/qa/debug/colors.sh b/slideshow/qa/debug/colors.sh new file mode 100644 index 000000000..c85a916d0 --- /dev/null +++ b/slideshow/qa/debug/colors.sh @@ -0,0 +1,16 @@ +#!/bin/sh +# +# Output a PS file with a legend for the node state colors +# + +cat < tree.ps' to generate a +# PostScript file for the AnimationNode tree generated during the show. +# Since these easily get pretty huge, use only one page, and try to +# limit the slide content (which have effects assigned, that is) to +# the bare minimum (to reproduce your bug, or whatever you need this +# for). +# +# The generated output will have all nodes color-coded with their state +# at the point when the tree was dumped (see colors.sh for the color +# codes) +# +# When looking for the mechanics that generate the relevant output, +# grep for the DEBUG_NODES_SHOWTREE macros in the slideshow source: +# Each such place dumps the current node tree to the trace output. Thus, +# if you need to check the tree state at other places or times, just add +# a DEBUG_NODES_SHOWTREE +# + +################################################### +# +# Generate node tree +# +################################################### + +egrep "Node connection|Node state" $1 | \ + sed -e '/Node state/ s/.*Node state.*: \(.*\)/\1/' \ + -e '/Node connection/ s/.*Node connection.*: \(n.*\)/\1/' | \ + \ +awk 'BEGIN { print "digraph Event_network {" }; { print } END { print "}" }' | \ + \ + \ +# fill a complete A1 page with graph output +dot -Gratio=fill -Gsize=23,33 -Tps +#dot -Gratio=fill -Gorientation=land -Tps diff --git a/slideshow/qa/debug/readme.txt b/slideshow/qa/debug/readme.txt new file mode 100644 index 000000000..eb458d686 --- /dev/null +++ b/slideshow/qa/debug/readme.txt @@ -0,0 +1,19 @@ +Recognized preprocessor switches +================================ + + - TIMELOG=t: enable time logging (also for product builds) + + +Debug tools overview +==================== + +nodetree.sh: + + Generates a number of tree graphs from a trace output file, showing + the tree of AnimationNodes at various instances of the + slideshow. Each node has a fill color corresponding to its current + state, a legend for the color values can be obtained by the colors.sh + script. + To generate output at other instances, use the DEBUG_NODES_SHOWTREE + macro in animationnodefactory.cxx. + diff --git a/slideshow/qa/debug/timings.pl b/slideshow/qa/debug/timings.pl new file mode 100644 index 000000000..f41181e43 --- /dev/null +++ b/slideshow/qa/debug/timings.pl @@ -0,0 +1,97 @@ +: +eval 'exec perl -wS $0 ${1+"$@"}' + if 0; +# +# This file is part of the LibreOffice project. +# +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +# +# This file incorporates work covered by the following license notice: +# +# Licensed to the Apache Software Foundation (ASF) under one or more +# contributor license agreements. See the NOTICE file distributed +# with this work for additional information regarding copyright +# ownership. The ASF licenses this file to you under the Apache +# License, Version 2.0 (the "License"); you may not use this file +# except in compliance with the License. You may obtain a copy of +# the License at http://www.apache.org/licenses/LICENSE-2.0 . +# +# POD Documentation + +=head1 PROGRAM NAME AND AUTHOR + +Timings + +=head1 WHAT IT IS + +Extract move effect timings from a verbose trace log of the +presentation engine. Generated is a gnuplot data file, which can be +displayed issuing a 'gnuplot ' or at a gnuplot prompt, via +'load '. + +To generate such a verbose log file, rebuild module canvas and module +slideshow with VERBOSE=t defined in the environment, and debug=t at +the build tool command line. Then run the presentation, and redirect +stdout to your log file. + +Call me like this: timings.pl < trace-file > gnuplot-target + +The whole point in doing this is to detect jerks in shape movements, +which manifest themselves clearly in the graphed gnuplot output. Note +that there's some heuristic to recognize when one effect ends and +another has started: If the time difference between two subsequent +page flipping times is more than one second, a new effect is assumed +and a new gnuplot data record is generated. + +=head1 REQUIREMENTS + +Perl 5 + +=cut + +############################################################################## +# + +print "# Autogenerated by timings.pl, do not change\n", + "set ylabel \"position\"\n", + "set xlabel \"time\"\n", + "plot '-' index 0 using (\$1):(\$2) title \"Move effect position\" with lp\n", + "#0\n"; + +$state = 0; +$last_time = 0; +$record = 1; + +while( <> ) +{ + if( $state == 0 && m|next position will be| ) + { + ($posX) = m|.*\(([0-9]+.[0-9]+),|; + ($posY) = m|.*,([0-9]+.[0-9]+)\)|; + $state = 1; + } + elsif( $state == 1 && m|output pos is| ) + { + $state = 2; + } + elsif( $state == 2 && m|flip done at| ) + { + $state = 0; + ($flippingTime) = m|.*at ([0-9]+.[0-9]+)|; + + if( $last_time != 0 ) + { + if( $last_time + 1.0 < $flippingTime ) + { + # new record + print "\n\n#", $record, "\n"; + $record++; + } + } + + $last_time = $flippingTime; + print $flippingTime, " ", $posX, " ", $posY, "\n"; + } +} -- cgit v1.2.3