<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE bugzilla SYSTEM "https://bugs.webkit.org/page.cgi?id=bugzilla.dtd">

<bugzilla version="5.0.4.1"
          urlbase="https://bugs.webkit.org/"
          
          maintainer="admin@webkit.org"
>

    <bug>
          <bug_id>49915</bug_id>
          
          <creation_ts>2010-11-22 09:21:13 -0800</creation_ts>
          <short_desc>[Qt] QWebFramePrivate::renderRelativeCoords() calls QPainter::save/restore more than necessary</short_desc>
          <delta_ts>2011-01-24 08:46:54 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit Qt</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>Qt, QtTriaged</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Andreas Kling">kling</reporter>
          <assigned_to name="Renata Hodovan">rhodovan.u-szeged</assigned_to>
          <cc>abarth</cc>
    
    <cc>eric</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>312374</commentid>
    <comment_count>0</comment_count>
    <who name="Andreas Kling">kling</who>
    <bug_when>2010-11-22 09:21:13 -0800</bug_when>
    <thetext>Find a way to minimize the number of save/restore calls.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>338972</commentid>
    <comment_count>1</comment_count>
      <attachid>79917</attachid>
    <who name="Renata Hodovan">rhodovan.u-szeged</who>
    <bug_when>2011-01-24 06:19:46 -0800</bug_when>
    <thetext>Created attachment 79917
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>338973</commentid>
    <comment_count>2</comment_count>
      <attachid>79917</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2011-01-24 06:24:08 -0800</bug_when>
    <thetext>Comment on attachment 79917
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=79917&amp;action=review

&gt; Source/WebKit/qt/ChangeLog:9
&gt; +        In the first loop of renderRelativeCoords() the call of QPainter::save/restore is useless, because
&gt; +        the only change is on it&apos;s context which is restored.

This sounds a bit strange, I would say something like &quot;..., because the context is saved/restored within the loop.&quot;

&gt; Source/WebKit/qt/ChangeLog:10
&gt; +        In the second loop their calling is also avoidable by using invert translation on context.

s/their calling is/the calls are/
s/invert/inverse/

&gt; Source/WebKit/qt/Api/qwebframe.cpp:408
&gt;                  view-&gt;paintScrollbars(context, rect);

Are you sure that FrameView::paintScrollbars() doesn&apos;t taint the GraphicsContext state?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>338982</commentid>
    <comment_count>3</comment_count>
    <who name="Renata Hodovan">rhodovan.u-szeged</who>
    <bug_when>2011-01-24 06:49:11 -0800</bug_when>
    <thetext>(In reply to comment #2)
&gt; (From update of attachment 79917 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=79917&amp;action=review
&gt; 
&gt; &gt; Source/WebKit/qt/ChangeLog:9
&gt; &gt; +        In the first loop of renderRelativeCoords() the call of QPainter::save/restore is useless, because
&gt; &gt; +        the only change is on it&apos;s context which is restored.
&gt; 
&gt; This sounds a bit strange, I would say something like &quot;..., because the context is saved/restored within the loop.&quot;
&gt; 
&gt; &gt; Source/WebKit/qt/ChangeLog:10
&gt; &gt; +        In the second loop their calling is also avoidable by using invert translation on context.
&gt; 
&gt; s/their calling is/the calls are/
&gt; s/invert/inverse/
Uppppdated...

&gt; &gt; Source/WebKit/qt/Api/qwebframe.cpp:408
&gt; &gt;                  view-&gt;paintScrollbars(context, rect);
&gt; 
&gt; Are you sure that FrameView::paintScrollbars() doesn&apos;t taint the GraphicsContext state?
No, GC is absolutely undamaged :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>338983</commentid>
    <comment_count>4</comment_count>
      <attachid>79917</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2011-01-24 06:53:01 -0800</bug_when>
    <thetext>Comment on attachment 79917
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=79917&amp;action=review

&gt;&gt;&gt; Source/WebKit/qt/Api/qwebframe.cpp:408
&gt;&gt;&gt;                  view-&gt;paintScrollbars(context, rect);
&gt;&gt; 
&gt;&gt; Are you sure that FrameView::paintScrollbars() doesn&apos;t taint the GraphicsContext state?
&gt; 
&gt; No, GC is absolutely undamaged :)

Awesomecake! r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>338987</commentid>
    <comment_count>5</comment_count>
    <who name="Renata Hodovan">rhodovan.u-szeged</who>
    <bug_when>2011-01-24 07:03:04 -0800</bug_when>
    <thetext>Closing bug.
This is landed in &lt;http://trac.webkit.org/changeset/76516&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>339042</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-01-24 08:46:54 -0800</bug_when>
    <thetext>http://trac.webkit.org/changeset/76516 might have broken GTK Linux 32-bit Debug
The following tests are not passing:
editing/selection/extend-selection-bidi.html</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>79917</attachid>
            <date>2011-01-24 06:19:46 -0800</date>
            <delta_ts>2011-01-24 07:03:48 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>save_restore.patch</filename>
            <type>text/plain</type>
            <size>2289</size>
            <attacher name="Renata Hodovan">rhodovan.u-szeged</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvcXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvcXQvQ2hhbmdlTG9nCShyZXZpc2lvbiA3NjUwOCkKKysrIFNvdXJjZS9XZWJLaXQvcXQv
Q2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTEtMDEtMjQgIFJl
bmF0YSBIb2RvdmFuICA8cmVuaUB3ZWJraXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIFtRdF0gUVdlYkZyYW1lUHJpdmF0ZTo6cmVuZGVyUmVs
YXRpdmVDb29yZHMoKSBjYWxscyBRUGFpbnRlcjo6c2F2ZS9yZXN0b3JlIG1vcmUgdGhhbiBuZWNl
c3NhcnkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ5
OTE1CisKKyAgICAgICAgSW4gdGhlIGZpcnN0IGxvb3Agb2YgcmVuZGVyUmVsYXRpdmVDb29yZHMo
KSB0aGUgY2FsbCBvZiBRUGFpbnRlcjo6c2F2ZS9yZXN0b3JlIGlzIHVzZWxlc3MsIGJlY2F1c2UK
KyAgICAgICAgdGhlIG9ubHkgY2hhbmdlIGlzIG9uIGl0J3MgY29udGV4dCB3aGljaCBpcyByZXN0
b3JlZC4KKyAgICAgICAgSW4gdGhlIHNlY29uZCBsb29wIHRoZWlyIGNhbGxpbmcgaXMgYWxzbyBh
dm9pZGFibGUgYnkgdXNpbmcgaW52ZXJ0IHRyYW5zbGF0aW9uIG9uIGNvbnRleHQuCisKKyAgICAg
ICAgKiBBcGkvcXdlYmZyYW1lLmNwcDoKKyAgICAgICAgKFFXZWJGcmFtZVByaXZhdGU6OnJlbmRl
clJlbGF0aXZlQ29vcmRzKToKKwogMjAxMS0wMS0yNCAgQW5kcmFzIEJlY3NpICA8YWJlY3NpQHdl
YmtpdC5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgQ3NhYmEgT3N6dHJvZ29uw6FjLgpJbmRl
eDogU291cmNlL1dlYktpdC9xdC9BcGkvcXdlYmZyYW1lLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0L3F0L0FwaS9xd2ViZnJhbWUuY3BwCShyZXZpc2lvbiA3NjUwNSkKKysrIFNvdXJj
ZS9XZWJLaXQvcXQvQXBpL3F3ZWJmcmFtZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM1Nyw3ICsz
NTcsNiBAQCB2b2lkIFFXZWJGcmFtZVByaXZhdGU6OnJlbmRlclJlbGF0aXZlQ29vCiAgICAgdmll
dy0+dXBkYXRlTGF5b3V0QW5kU3R5bGVJZk5lZWRlZFJlY3Vyc2l2ZSgpOwogCiAgICAgaWYgKGxh
eWVyICYgUVdlYkZyYW1lOjpDb250ZW50c0xheWVyKSB7Ci0gICAgICAgIHBhaW50ZXItPnNhdmUo
KTsKICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCB2ZWN0b3Iuc2l6ZSgpOyArK2kpIHsKICAg
ICAgICAgICAgIGNvbnN0IFFSZWN0JiBjbGlwUmVjdCA9IHZlY3Rvci5hdChpKTsKIApAQCAtMzgz
LDcgKzM4Miw2IEBAIHZvaWQgUVdlYkZyYW1lUHJpdmF0ZTo6cmVuZGVyUmVsYXRpdmVDb28KIAog
ICAgICAgICAgICAgY29udGV4dC0+cmVzdG9yZSgpOwogICAgICAgICB9Ci0gICAgICAgIHBhaW50
ZXItPnJlc3RvcmUoKTsKICNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpICYmIFVTRShU
RVhUVVJFX01BUFBFUikKICAgICAgICAgcmVuZGVyQ29tcG9zaXRlZExheWVycyhjb250ZXh0LCBJ
bnRSZWN0KGNsaXAuYm91bmRpbmdSZWN0KCkpKTsKICNlbmRpZgpAQCAtNDAzLDE1ICs0MDEsMTMg
QEAgdm9pZCBRV2ViRnJhbWVQcml2YXRlOjpyZW5kZXJSZWxhdGl2ZUNvbwogICAgICAgICAgICAg
aWYgKGxheWVyICYgUVdlYkZyYW1lOjpTY3JvbGxCYXJMYXllcgogICAgICAgICAgICAgICAgICYm
ICF2aWV3LT5zY3JvbGxiYXJzU3VwcHJlc3NlZCgpCiAgICAgICAgICAgICAgICAgJiYgKHZpZXct
Pmhvcml6b250YWxTY3JvbGxiYXIoKSB8fCB2aWV3LT52ZXJ0aWNhbFNjcm9sbGJhcigpKSkgewot
ICAgICAgICAgICAgICAgIGNvbnRleHQtPnNhdmUoKTsKLQogICAgICAgICAgICAgICAgIFFSZWN0
IHJlY3QgPSBpbnRlcnNlY3RlZFJlY3Q7CiAgICAgICAgICAgICAgICAgY29udGV4dC0+dHJhbnNs
YXRlKHgsIHkpOwogICAgICAgICAgICAgICAgIHJlY3QudHJhbnNsYXRlKC14LCAteSk7CiAKICAg
ICAgICAgICAgICAgICB2aWV3LT5wYWludFNjcm9sbGJhcnMoY29udGV4dCwgcmVjdCk7CiAKLSAg
ICAgICAgICAgICAgICBjb250ZXh0LT5yZXN0b3JlKCk7CisgICAgICAgICAgICAgICAgY29udGV4
dC0+dHJhbnNsYXRlKC14LCAteSk7CiAgICAgICAgICAgICB9CiAKICNpZiBFTkFCTEUoUEFOX1ND
Uk9MTElORykK
</data>

          </attachment>
      

    </bug>

</bugzilla>