v0.3.0 2df0761

doc.go RawHistoryFolder

1// Package neferclient is a Wayland client toolkit library for Go: connection,
2// outputs, surface roles, seat and DMA-BUF presentation. It does not render
3// and holds no application policy.
4//
5// # Rebuilding after a dmabuf feedback change
6//
7// The compositor may change its linux-dmabuf preference at any time (another
8// main device or format table, for example when a surface moves to a GPU on
9// another output). Every complete round calls [Handler.FeedbackDone], also when
10// nothing changed. A renderer built from the first feedback must then be
11// rebuilt from the new one. On the owner goroutine:
12//
13//  1. Keep a [Feedback.Clone] of the feedback each renderer was built from. In
14//     FeedbackDone, return when [Feedback.Equal] says the preference is the
15//     one in use.
16//  2. Stop watching the renderer's descriptors, call [Surface.DestroyImports]
17//     (a frame may be pending: that is allowed), then close the old renderer.
18//  3. Build the new renderer from [Surface.Feedback] and import its buffers and
19//     timelines on demand, as for the first one. Ids may be reused.
20//  4. Present again when [Handler.Frame] reports the pending frame; Present
21//     refuses until then, with the old renderer or the new one.
22//
23// Destroying the wl_buffer and timeline objects never withdraws a commit the
24// compositor already holds, and the duplicated descriptors are owned by the
25// requests, so rebuilding cannot touch a destroyed object or close a
26// descriptor twice. The compositor holds its own references to the DMA-BUFs
27// and timelines it received, so closing the old renderer at once is safe; what
28// the explicit-sync rule forbids is writing to or recycling storage before its
29// release point signals.
30package neferclient

Keyboard shortcuts

Single-key shortcuts are on. ctrl k and esc work whatever this says.

ctrl k :
go to a section, branch, tag, file or repository
?
this list
j k
move the row cursor down / up
enter
open the row under the cursor; on Files, a directory opens or closes in place
↑ ↓ ← → home end
in the file tree (focus on a row): previous / next row, close / open a directory or go to its parent / first entry, first / last row. They never open a file
l h
on Files: open a directory or a file / close a directory or go up to its parent, then to the parent page. Elsewhere: into the side panel (on a merge request, its files) / back to the content; there j k move between its controls
g g G
first / last row
/
filter the list; on Files, find a file anywhere in the repository (esc clears, enter opens the best match)
b
switch branch or tag
g s g f g c g b g m g i g r g a
tabs: summary, files, commits, branches & tags, merge requests, issues, releases, actions (when available)
g h
home
w
wide mode: use the whole width of the screen, or not (remembered)
y
copy a permalink pinned to the commit
d u x
diff: split / unified / collapse or expand all
e E
diff: the whole file in view / every file, with the lines the hunks hide
n
merge request: next note in the diff
esc
close a dialog, leave a field

Branches 1

Tags 4

↑↓ moveenter openesc close