Hello community, here is the log from the commit of package amarok for openSUSE:12.1:Update:Test checked in at 2011-12-12 16:26:14 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:12.1:Update:Test/amarok (Old) and /work/SRC/openSUSE:12.1:Update:Test/.amarok.new (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "amarok", Maintainer is "[email protected]" Changes: -------- --- /work/SRC/openSUSE:12.1:Update:Test/amarok/amarok.changes 2011-12-12 16:26:19.000000000 +0100 +++ /work/SRC/openSUSE:12.1:Update:Test/.amarok.new/amarok.changes 2011-12-12 16:26:19.000000000 +0100 @@ -1,0 +2,7 @@ +Sat Dec 10 07:03:24 UTC 2011 - [email protected] + +- Add amarok-fix-infinite-loop-eating-CPU.diff + * Fix infinite loop in context view eating CPU until main + window is shown (bnc#733421) + +------------------------------------------------------------------- New: ---- amarok-fix-infinite-loop-eating-CPU.diff ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ amarok.spec ++++++ --- /var/tmp/diff_new_pack.Izk6sg/_old 2011-12-12 16:26:20.000000000 +0100 +++ /var/tmp/diff_new_pack.Izk6sg/_new 2011-12-12 16:26:20.000000000 +0100 @@ -15,17 +15,16 @@ # Please submit bugfixes or comments via http://bugs.opensuse.org/ # - %bcond_with ffmpeg Name: amarok Version: 2.4.3 -Release: 4 +Release: 0 Summary: Media Player for KDE +License: GPL-2.0+ +Group: Productivity/Multimedia/Sound/Players -License: GPLv2+ Url: http://amarok.kde.org/ -Group: Productivity/Multimedia/Sound/Players Source0: ftp://ftp.kde.org/pub/kde/stable/amarok/%{version}/src/%{name}-%{version}.tar.bz2 # PATCH-FEATURE-OPENSUSE ksuseinstall.diff [email protected] -- Support for on-demand codecs install using ksuseinstall Patch1: ksuseinstall.diff @@ -33,6 +32,8 @@ Patch2: initial-preference.diff # PATCH-FIX-OPENSUSE flac_mimetype_bnc671581.diff bnc#671581 [email protected] -- Support for the changed mimetype for flac files Patch3: flac_mimetype_bnc671581.diff +# PATCH-FIX-UPSTREAM amarok-fix-infinite-loop-eating-CPU.diff bnc#733421 [email protected] -- Fix infinite loop in context view eating CPU until main window shown +Patch4: amarok-fix-infinite-loop-eating-CPU.diff BuildRoot: %{_tmppath}/%{name}-%{version}-build # Required for the fdupes macro @@ -93,6 +94,7 @@ %if 0%{?suse_version} > 1130 %patch3 %endif +%patch4 -p1 # Remove build time references so build-compare can do its work FAKE_BUILDDATE=$(LC_ALL=C date -u -r %{_sourcedir}/%{name}.changes '+%%b %%e %%Y') ++++++ amarok-fix-infinite-loop-eating-CPU.diff ++++++ commit 79bd9a7c6777e3f5d4e723bc5d3b00e5d6fe532b Author: Matěj Laitl <[email protected]> Date: Sun Nov 27 15:24:55 2011 +0100 Fix infinite loop in context view eating CPU until main window is shown We used to use _scene_ sceneRect in VerticalToolbarContainment::updateGeometry() to update applets and geometry, but that leaded to infinite loop (across mainloop) - m_applets->setGeometry(), refresh() would enlarge _scene_ sceneRect by a few pixels which would trigger updateGeometry() and so on... We now use _view_ sceneRect to update geometry. Rick W. Chen discovered some glitches in applet collapsing when this patch is applied, but he has a patch for that in the works and this is more serious problem, so pushing this. REVIEW: 103271 BUG: 278897 FIXED-IN: 2.5 Index: amarok-2.4.3/src/context/containments/verticallayout/VerticalToolbarContainment.cpp =================================================================== --- amarok-2.4.3.orig/src/context/containments/verticallayout/VerticalToolbarContainment.cpp +++ amarok-2.4.3/src/context/containments/verticallayout/VerticalToolbarContainment.cpp @@ -118,7 +118,18 @@ void Context::VerticalToolbarContainment::updateGeometry() { Context::Containment::updateGeometry(); - QRectF rect = scene()->sceneRect(); + + /* We used to use _scene_ sceneRect here to update applets and geomtery, but that + * leaded to infinite loop (across mainloop) - see bug 278897. + * (m_applets->setGeometry(), refresh() would enlarge _scene_ sceneRect by a few + * pixels which would trigger updateGeometry() and so on...) + * + * We now use _view_ sceneRect to update geometry and do nothing without a view + */ + if(!view()) + return; + + QRectF rect = view()->sceneRect(); setGeometry( rect ); m_applets->setGeometry( rect ); m_applets->refresh(); -- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
