{"action":"created","issue":{"url":"https://api.github.com/repos/servo/webrender/issues/934","repository_url":"https://api.github.com/repos/servo/webrender","labels_url":"https://api.github.com/repos/servo/webrender/issues/934/labels{/name}","comments_url":"https://api.github.com/repos/servo/webrender/issues/934/comments","events_url":"https://api.github.com/repos/servo/webrender/issues/934/events","html_url":"https://github.com/servo/webrender/pull/934","id":210615412,"number":934,"title":"[RFC] Add support for pushing already built display lists.","user":{"login":"jrmuizel","id":332653,"avatar_url":"https://avatars2.githubusercontent.com/u/332653?v=3","gravatar_id":"","url":"https://api.github.com/users/jrmuizel","html_url":"https://github.com/jrmuizel","followers_url":"https://api.github.com/users/jrmuizel/followers","following_url":"https://api.github.com/users/jrmuizel/following{/other_user}","gists_url":"https://api.github.com/users/jrmuizel/gists{/gist_id}","starred_url":"https://api.github.com/users/jrmuizel/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jrmuizel/subscriptions","organizations_url":"https://api.github.com/users/jrmuizel/orgs","repos_url":"https://api.github.com/users/jrmuizel/repos","events_url":"https://api.github.com/users/jrmuizel/events{/privacy}","received_events_url":"https://api.github.com/users/jrmuizel/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":3,"created_at":"2017-02-27T21:42:09Z","updated_at":"2017-03-01T21:49:12Z","closed_at":null,"pull_request":{"url":"https://api.github.com/repos/servo/webrender/pulls/934","html_url":"https://github.com/servo/webrender/pull/934","diff_url":"https://github.com/servo/webrender/pull/934.diff","patch_url":"https://github.com/servo/webrender/pull/934.patch"},"body":"Gecko has the concept of 'empty transactions' where we need to get a new\r\nframe composited but aren't rebuilding the Gecko display lists. To\r\nsupport this we'd like to keep around a retained representation of the\r\npartial WebRender display list.\r\n\r\nOne easy way to implement this is to just use a BuiltDisplayList\r\nas the retained representation and support appending them\r\nto display lists. Unfortunately, the implementation is a bit fragile\r\nbecause of needing to deal with ItemRanges.\n\n<!-- Reviewable:start -->\n---\nThis change is [<img src=\"https://reviewable.io/review_button.svg\" height=\"34\" align=\"absmiddle\" alt=\"Reviewable\"/>](https://reviewable.io/reviews/servo/webrender/934)\n<!-- Reviewable:end -->\n"},"comment":{"url":"https://api.github.com/repos/servo/webrender/issues/comments/283481628","html_url":"https://github.com/servo/webrender/pull/934#issuecomment-283481628","issue_url":"https://api.github.com/repos/servo/webrender/issues/934","id":283481628,"user":{"login":"glennw","id":2350882,"avatar_url":"https://avatars3.githubusercontent.com/u/2350882?v=3","gravatar_id":"","url":"https://api.github.com/users/glennw","html_url":"https://github.com/glennw","followers_url":"https://api.github.com/users/glennw/followers","following_url":"https://api.github.com/users/glennw/following{/other_user}","gists_url":"https://api.github.com/users/glennw/gists{/gist_id}","starred_url":"https://api.github.com/users/glennw/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/glennw/subscriptions","organizations_url":"https://api.github.com/users/glennw/orgs","repos_url":"https://api.github.com/users/glennw/repos","events_url":"https://api.github.com/users/glennw/events{/privacy}","received_events_url":"https://api.github.com/users/glennw/received_events","type":"User","site_admin":false},"created_at":"2017-03-01T21:49:12Z","updated_at":"2017-03-01T21:49:12Z","body":"For that use case, the preferred API is here - https://github.com/servo/webrender/pull/832.\r\n\r\nThe way it works, roughly, is:\r\n\r\n* During DL construction, you set properties you want to animate to be a \"binding\" (opacity and transform are supported now, but others are easy to add).\r\n* Then, when you call api.generate_frame() you can pass an optional list of property values (these are the current value of the animated properties).\r\n\r\nIn this way, there is no need to maintain a client-side copy of the display list. You can just re-draw the same display list by calling generate_frame(), but specifying different values for the animated properties.\r\n\r\nDoes this sound like it would cover all the use cases you know of?\r\n"}}
{"actor":{"display_login":"glennw"}}