Skip to content

Commit 88c1f50

Browse files
committed
fix: set context to current with surface
1 parent 388794f commit 88c1f50

File tree

4 files changed

+13
-8
lines changed

4 files changed

+13
-8
lines changed

cosmic-panel-bin/src/space/overflow.rs

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ use cosmic_panel_config::PanelAnchor;
99
use sctk::shell::WaylandSurface;
1010
use smithay::{
1111
self,
12-
backend::renderer::damage::OutputDamageTracker,
12+
backend::renderer::{damage::OutputDamageTracker, gles::GlesRenderer},
1313
desktop::space::SpaceElement,
1414
utils::{Rectangle, Size},
1515
};
@@ -169,7 +169,7 @@ impl PanelSpace {
169169
(element, popup_element.cloned())
170170
}
171171

172-
pub fn handle_overflow_popup_events(&mut self) {
172+
pub fn handle_overflow_popup_events(&mut self, renderer: &mut GlesRenderer) {
173173
self.overflow_popup = self
174174
.overflow_popup
175175
.take()
@@ -180,7 +180,9 @@ impl PanelSpace {
180180
p.rectangle = Rectangle::from_loc_and_size((x, y), (width, height));
181181
let scaled_size: Size<i32, _> =
182182
p.rectangle.size.to_f64().to_physical(p.scale).to_i32_round();
183+
183184
if let Some(s) = p.egl_surface.as_ref() {
185+
_ = unsafe { renderer.egl_context().make_current_with_surface(s) };
184186
// TODO do we need to have the renderer for
185187
s.resize(scaled_size.w.max(1), scaled_size.h.max(1), 0, 0);
186188
}

cosmic-panel-bin/src/space/panel_space.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -905,7 +905,7 @@ impl PanelSpace {
905905
let prev = self.popups.len();
906906
self.popups.retain_mut(|p: &mut WrapperPopup| p.handle_events(popup_manager, renderer));
907907
self.subsurfaces.retain_mut(|s: &mut WrapperSubsurface| s.handle_events());
908-
self.handle_overflow_popup_events();
908+
self.handle_overflow_popup_events(renderer);
909909

910910
if prev == self.popups.len() && should_render {
911911
if let Err(e) = self.render(renderer, time, throttle, qh) {

cosmic-panel-bin/src/space/render.rs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -379,10 +379,11 @@ impl PanelSpace {
379379
&& subsurface.subsurface.c_surface.is_alive()
380380
&& subsurface.subsurface.has_frame
381381
}) {
382-
let age = subsurface.subsurface.egl_surface.buffer_age().unwrap_or_default() as usize;
383382
_ = unsafe {
384383
renderer.egl_context().make_current_with_surface(&subsurface.subsurface.egl_surface)
385384
};
385+
let age = subsurface.subsurface.egl_surface.buffer_age().unwrap_or_default() as usize;
386+
386387
let mut f = renderer.bind(&mut subsurface.subsurface.egl_surface)?;
387388

388389
let mut loc = subsurface.subsurface.rectangle.loc;

cosmic-panel-bin/src/xdg_shell_wrapper/client/handlers/wp_security_context.rs

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -54,10 +54,12 @@ impl SecurityContextManager {
5454
let addr = SocketAddr::from_abstract_name(s)?;
5555
// this also listens on the socket
5656
let listener = UnixListener::bind_addr(&addr)?;
57-
let wp_security_context =
58-
self.manager.create_listener(listener.as_fd(), close_fd.as_fd(), qh, SecurityContext {
59-
conn: Arc::new(Mutex::new(None)),
60-
});
57+
let wp_security_context = self.manager.create_listener(
58+
listener.as_fd(),
59+
close_fd.as_fd(),
60+
qh,
61+
SecurityContext { conn: Arc::new(Mutex::new(None)) },
62+
);
6163
let conn = UnixStream::connect_addr(&addr)?;
6264
// XXX make sure no one else can connect to the listener
6365
drop(close_fd_ours);

0 commit comments

Comments
 (0)