diff options
author | Ms2ger <ms2ger@gmail.com> | 2015-07-04 08:55:18 +0200 |
---|---|---|
committer | Ms2ger <ms2ger@gmail.com> | 2015-07-07 11:11:46 +0200 |
commit | 028484526ddf570d33fd4e0a8965b54bc8ef3de6 (patch) | |
tree | fe579686320cbe2f96ea49cda22388cadbb44ebe | |
parent | a0db2cf1bb720130aabd0d755e9432bd17063740 (diff) | |
download | servo-028484526ddf570d33fd4e0a8965b54bc8ef3de6.tar.gz servo-028484526ddf570d33fd4e0a8965b54bc8ef3de6.zip |
Require that WorkQueue's QueueData is Sync rather than Send.
-rw-r--r-- | components/layout/context.rs | 11 | ||||
-rw-r--r-- | components/util/workqueue.rs | 4 |
2 files changed, 12 insertions, 3 deletions
diff --git a/components/layout/context.rs b/components/layout/context.rs index 1e376166300..bf560ff6cc0 100644 --- a/components/layout/context.rs +++ b/components/layout/context.rs @@ -129,7 +129,16 @@ pub struct SharedLayoutContext { pub goal: ReflowGoal, } -unsafe impl Send for SharedLayoutContext {} +// FIXME(#6569) This implementations is unsound: +// XXX UNSOUND!!! for image_cache_task +// XXX UNSOUND!!! for image_cache_sender +// XXX UNSOUND!!! for constellation_chan +// XXX UNSOUND!!! for layout_chan +// XXX UNSOUND!!! for font_cache_task +// XXX UNSOUND!!! for stylist +// XXX UNSOUND!!! for new_animations_sender +// XXX UNSOUND!!! for canvas_layers_sender +unsafe impl Sync for SharedLayoutContext {} pub struct LayoutContext<'a> { pub shared: &'a SharedLayoutContext, diff --git a/components/util/workqueue.rs b/components/util/workqueue.rs index e32e4f1ec35..a4c80359a9b 100644 --- a/components/util/workqueue.rs +++ b/components/util/workqueue.rs @@ -93,7 +93,7 @@ fn next_power_of_two(mut v: u32) -> u32 { v } -impl<QueueData: Send, WorkData: Send> WorkerThread<QueueData, WorkData> { +impl<QueueData: Sync, WorkData: Send> WorkerThread<QueueData, WorkData> { /// The main logic. This function starts up the worker and listens for /// messages. fn start(&mut self) { @@ -232,7 +232,7 @@ pub struct WorkQueue<QueueData: 'static, WorkData: 'static> { work_count: usize, } -impl<QueueData: Send, WorkData: Send> WorkQueue<QueueData, WorkData> { +impl<QueueData: Sync, WorkData: Send> WorkQueue<QueueData, WorkData> { /// Creates a new work queue and spawns all the threads associated with /// it. pub fn new(task_name: &'static str, |