summaryrefslogtreecommitdiffstats
path: root/winit/src
diff options
context:
space:
mode:
authorLibravatar Héctor Ramón Jiménez <hector0193@gmail.com>2019-12-10 03:43:00 +0100
committerLibravatar Héctor Ramón Jiménez <hector0193@gmail.com>2019-12-10 03:43:00 +0100
commitcdb7acf6c20fe13a09e75ea1c47d53ced6174698 (patch)
treefb96d1a6fbc762a323c72d840e4902a2b0d45f4c /winit/src
parente189c22bb09e471e8f899ef184d2a99e2e22c484 (diff)
downloadiced-cdb7acf6c20fe13a09e75ea1c47d53ced6174698.tar.gz
iced-cdb7acf6c20fe13a09e75ea1c47d53ced6174698.tar.bz2
iced-cdb7acf6c20fe13a09e75ea1c47d53ced6174698.zip
Implement `Subscription::map` and `from_recipe`
Diffstat (limited to 'winit/src')
-rw-r--r--winit/src/application.rs20
1 files changed, 14 insertions, 6 deletions
diff --git a/winit/src/application.rs b/winit/src/application.rs
index 49a01320..fb31c44f 100644
--- a/winit/src/application.rs
+++ b/winit/src/application.rs
@@ -2,8 +2,8 @@ use crate::{
conversion,
input::{keyboard, mouse},
renderer::{Target, Windowed},
- Cache, Command, Container, Debug, Element, Event, Length, MouseCursor,
- Settings, Subscription, UserInterface,
+ Cache, Command, Container, Debug, Element, Event, Hasher, Length,
+ MouseCursor, Settings, Subscription, UserInterface,
};
use std::collections::HashMap;
@@ -448,11 +448,19 @@ impl Subscriptions {
) {
use futures::{future::FutureExt, stream::StreamExt};
- let connections = subscriptions.connections();
+ let recipes = subscriptions.recipes();
let mut alive = std::collections::HashSet::new();
- for connection in connections {
- let id = connection.id();
+ for recipe in recipes {
+ let id = {
+ use std::hash::Hasher as _;
+
+ let mut hasher = Hasher::default();
+ recipe.hash(&mut hasher);
+
+ hasher.finish()
+ };
+
let _ = alive.insert(id);
if !self.alive.contains_key(&id) {
@@ -460,7 +468,7 @@ impl Subscriptions {
let (event_sender, event_receiver) =
futures::channel::mpsc::channel(100);
- let stream = connection.stream(event_receiver);
+ let stream = recipe.stream(event_receiver);
let proxy =
std::sync::Arc::new(std::sync::Mutex::new(proxy.clone()));