Replace unrendered frame with a frame counter

Move facepile to the left hand side
This commit is contained in:
Piotr Osiewicz 2023-11-27 13:02:21 +01:00
parent 9590f253a9
commit 714b45157b
6 changed files with 16 additions and 13 deletions

1
Cargo.lock generated
View file

@ -1206,6 +1206,7 @@ dependencies = [
"serde_json", "serde_json",
"settings2", "settings2",
"smallvec", "smallvec",
"ui2",
"util", "util",
"workspace2", "workspace2",
] ]

View file

@ -31,6 +31,7 @@ media = { path = "../media" }
project = { package = "project2", path = "../project2" } project = { package = "project2", path = "../project2" }
settings = { package = "settings2", path = "../settings2" } settings = { package = "settings2", path = "../settings2" }
util = { path = "../util" } util = { path = "../util" }
ui = {package = "ui2", path = "../ui2"}
workspace = {package = "workspace2", path = "../workspace2"} workspace = {package = "workspace2", path = "../workspace2"}
async-trait.workspace = true async-trait.workspace = true
anyhow.workspace = true anyhow.workspace = true

View file

@ -592,13 +592,9 @@ impl CallHandler for Call {
cx: &mut ViewContext<Workspace>, cx: &mut ViewContext<Workspace>,
) -> Option<Box<dyn ItemHandle>> { ) -> Option<Box<dyn ItemHandle>> {
let (call, _) = self.active_call.as_ref()?; let (call, _) = self.active_call.as_ref()?;
dbg!("A");
let room = call.read(cx).room()?.read(cx); let room = call.read(cx).room()?.read(cx);
dbg!("B");
let participant = room.remote_participant_for_peer_id(peer_id)?; let participant = room.remote_participant_for_peer_id(peer_id)?;
dbg!("C");
let track = participant.video_tracks.values().next()?.clone(); let track = participant.video_tracks.values().next()?.clone();
dbg!("D");
let user = participant.user.clone(); let user = participant.user.clone();
for item in pane.read(cx).items_of_type::<SharedScreen>() { for item in pane.read(cx).items_of_type::<SharedScreen>() {
if item.read(cx).peer_id == peer_id { if item.read(cx).peer_id == peer_id {

View file

@ -1342,8 +1342,6 @@ impl Room {
let display = displays let display = displays
.first() .first()
.ok_or_else(|| anyhow!("no display found"))?; .ok_or_else(|| anyhow!("no display found"))?;
dbg!("Been there");
dbg!(displays.len());
let track = LocalVideoTrack::screen_share_for_display(&display); let track = LocalVideoTrack::screen_share_for_display(&display);
this.upgrade() this.upgrade()
.ok_or_else(|| anyhow!("room was dropped"))? .ok_or_else(|| anyhow!("room was dropped"))?

View file

@ -3,8 +3,8 @@ use anyhow::Result;
use client::{proto::PeerId, User}; use client::{proto::PeerId, User};
use futures::StreamExt; use futures::StreamExt;
use gpui::{ use gpui::{
div, img, AppContext, Div, Element, EventEmitter, FocusHandle, FocusableView, ImageData, div, AppContext, Div, Element, EventEmitter, FocusHandle, FocusableView, ParentElement, Render,
ParentElement, Render, SharedString, Task, View, ViewContext, VisualContext, WindowContext, SharedString, Task, View, ViewContext, VisualContext, WindowContext,
}; };
use std::sync::{Arc, Weak}; use std::sync::{Arc, Weak};
use workspace::{item::Item, ItemNavHistory, WorkspaceId}; use workspace::{item::Item, ItemNavHistory, WorkspaceId};
@ -16,6 +16,8 @@ pub enum Event {
pub struct SharedScreen { pub struct SharedScreen {
track: Weak<RemoteVideoTrack>, track: Weak<RemoteVideoTrack>,
frame: Option<Frame>, frame: Option<Frame>,
// temporary addition just to render something interactive.
current_frame_id: usize,
pub peer_id: PeerId, pub peer_id: PeerId,
user: Arc<User>, user: Arc<User>,
nav_history: Option<ItemNavHistory>, nav_history: Option<ItemNavHistory>,
@ -49,6 +51,7 @@ impl SharedScreen {
Ok(()) Ok(())
}), }),
focus: cx.focus_handle(), focus: cx.focus_handle(),
current_frame_id: 0,
} }
} }
} }
@ -65,11 +68,14 @@ impl Render for SharedScreen {
type Element = Div; type Element = Div;
fn render(&mut self, _: &mut ViewContext<Self>) -> Self::Element { fn render(&mut self, _: &mut ViewContext<Self>) -> Self::Element {
let frame = self.frame.clone(); let frame = self.frame.clone();
div().children(frame.map(|frame| { let frame_id = self.current_frame_id;
img().data(Arc::new(ImageData::new(image::ImageBuffer::new( self.current_frame_id = self.current_frame_id.wrapping_add(1);
frame.width() as u32, div().children(frame.map(|_| {
frame.height() as u32, ui::Label::new(frame_id.to_string()).color(ui::Color::Error)
)))) // img().data(Arc::new(ImageData::new(image::ImageBuffer::new(
// frame.width() as u32,
// frame.height() as u32,
// ))))
})) }))
} }
} }

View file

@ -203,6 +203,7 @@ impl Render for CollabTitlebarItem {
) )
}, },
) )
.child(div().flex_1())
.when(is_in_room, |this| { .when(is_in_room, |this| {
this.child( this.child(
h_stack() h_stack()