On 3/21/18 5:54 PM, Praneet Mocherla wrote:
On Wednesday, March 21, 2018 at 5:30:36 PM UTC-4, Josh Bowman-Matthews wrote:
On 3/21/18 4:43 PM, Praneet Mocherla wrote:
Hi all,
Brody and I are working on the canvas rendering project:
https://github.com/servo/servo/wiki/Canvas-rendering-project
We've been working on this for a couple of days, and it's our first time
contributing to an open source project. We are currently stuck at this initial
step:
"make the response_sender argument of handle_create_canvas_paint_thread also include
the new CanvasId value, and pass it as an argument to CanvasPaintThread::start. Store the
id when it is received for use in all canvas messages"
We're confused on how to associate the response sender with the CanvasId. Any
help would be appreciated!
Thanks,
Praneet and Brody
Welcome! A sender has a type T associated with it, so it looks like
Sender<T> (or IpcSender<T>). This means you'll see something like
Sender<Whatever>; but T can also be a tuple like (SomeType,
AnotherType). I would recommend turning it into a Sender<(CanvasId,
Whatever)> so that all users will have to send a CanvasId value along
with the existing value.
Cheers,
Josh
Thanks for the quick reply! How do we make sure that each user gets a
particular CanvasId? In other words, how do we make the layout get the CanvasId
from an html fragment and how does CanvasRenderingContext2D get the id from
starting the thread?
We've also added the CanvasId to each member of the enum. We are able to
generate the CanvasId in the constellation while starting threads and we are
able to use the CanvasId whenever we're making/decoding canvas messages.
The sender that handle_create_canvas_paint_thread_msg accepts is an
IpcSender<IpcSender<CanvasMsg>>. The code that initially kicks off the
canvas creation is sitting waiting on a response from the outer sender,
which is provide it with a sender communicate with the new thread. This
means that we can modify the outer sender to also include the new ID
that is generated, so the creator receives both the ID and the new
sender at the same. Does that make sense?
As for the layout, you can add an API to LayoutHTMLCanvasElementHelpers
that returns the stored ID value from a field of HTMLCanvasElement.
Cheers,
Josh
_______________________________________________
dev-servo mailing list
dev-servo@lists.mozilla.org
https://lists.mozilla.org/listinfo/dev-servo