Hacktoberfest 2026: die Issues, die Maintainer für den Oktober markiert haben – offen und einsteigerfreundlich. Hacktoberfest-Issues durchsuchen

Is `Context` needed for anything other than performance?

Offen
#306 2 Kommentare 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen

Dieses Issue hat noch niemand übernommen.

Bewertung

Schwierigkeit
5/5
Geschätzter Aufwand
Über eine Woche
Anfängerfreundlichkeit
25/100
Issue-Typ
Feature
Klarheit
Größtenteils klar
Aktivitätsstatus
Veraltet
Tech-Stack
rust

Rechercherichtung

Beginne mit dem Lesen des verknüpften softbuffer issue 37, pull request 64 und des zugehörigen issue 298, um zu überprüfen, warum Context und Surface getrennt sind. Untersuche anschließend die öffentlichen Context- und Surface-APIs sowie deren Eigentumsbeschränkungen. Als erledigt gilt, eine endgültige API-Entscheidung für den Komfortfall mit einem einzelnen Fenster zu erreichen, ohne die Nutzung mit mehreren Fenstern zu beeinträchtigen.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Beschreibung

DS - Wayland DS - X11 question

I've read https://github.com/rust-windowing/softbuffer/issues/37 and https://github.com/rust-windowing/softbuffer/pull/64, and from my understanding, the split between Context and Surface is purely for performance, to allow sharing resources that are expensive to create.

Is that correct?

If so, then I feel it might make sense to add a convenience wrapper like:

impl<W: HasDisplayHandle + HasWindowHandle> Surface<W, W> {
    pub fn new_single_window_bikeshed(window: W) -> Result<Self, CreationError> {
        // Conceptual implementation, needs to be done differently in reality
        // since the window needs to only be stored in the surface.
        let context = Context::new(window);
        Self::new(&context, window)
    }
}

And perhaps change Surface to be something like struct Surface<D, W = D> (make the two type parameters default to be the same type).

This would simplify the common use-case of having a single window to be:

struct App {
    surface: softbuffer::Surface<winit::Window>,
    // + possibly an `Option` if you want to support Android too.
}

While still allowing the more complex multi-window case:

struct App {
    context: softbuffer::Context<winit::OwnedDisplayHandle>,
    surfaces: Vec<softbuffer::Surface<winit::OwnedDisplayHandle, winit::Window>>,
}

See relatedly https://github.com/rust-windowing/softbuffer/issues/298.

Vorherrschende Sprache
Rust
Sterne
511
Forks
88
PR-Merge-Kennzahlen
Keine gemergten PRs in 30 T.

Entwicklungsumgebung

  • Kein Dockerfile und keine Docker-Compose-Datei
  • Hat eine Pull-Request-Vorlage
  • Kein Beitragsleitfaden

Erste Schritte

  1. Lesen Sie das ganze Issue und danach den Beitragsleitfaden des Projekts.
  2. Schreiben Sie ins Issue, dass Sie es übernehmen — das erspart doppelte Arbeit.
  3. Forken Sie das Repository und arbeiten Sie in einem Branch.
  4. Öffnen Sie einen Pull Request, der die Issue-Nummer nennt.

Mehr aus rust-windowing/softbuffer

Alle Issues in rust-windowing/softbuffer

Ähnliche Issues

Weitere Issues zu Rust

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.