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",
"settings2",
"smallvec",
"ui2",
"util",
"workspace2",
]

View File

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

View File

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

View File

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

View File

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