Skip to content

Feat: experimental syphon output#622

Merged
aalex merged 3 commits into
devfrom
feat-syphon-output
Jun 25, 2026
Merged

Feat: experimental syphon output#622
aalex merged 3 commits into
devfrom
feat-syphon-output

Conversation

@aalex

@aalex aalex commented Jun 24, 2026

Copy link
Copy Markdown
Member

Summary

This branch contains two independent changes:

  1. Syphon output (Phase 1) — publishes the output composition as a Syphon
    source on macOS, gated behind an experimental build flag (off by default).
  2. In-app links — adds Help-menu and About-dialog links to Art Plus Code
    professional services and to project donations.

Syphon output (experimental)

  • Publishes the output composition as a Syphon server (macOS).
  • Disabled by default; enabled with the SYPHON_OUTPUT_EXPERIMENTAL build flag
    (see src/src.pri).
  • Touches SyphonServerImpl.mm, OutputGLCanvas.cpp, MainWindow.cpp (guards),
    src/src.pri.
  • We might need to do Modernize the graphics pipeline: legacy OpenGL -> Qt RHI #621 before this actually works.

In-app links to services and donations

  • New Help-menu items: "Professional services & custom development"
    (→ artpluscode.com) and "Support the project (donate)" (→ GitHub Sponsors).
  • Matching links in the About dialog.
  • Reorganized the Help menu into free-help / community / commercial groups and
    removed the redundant "Technical support" item (it duplicated "Documentation").
  • New SERVICES_URL and DONATE_URL constants in MM.{h,cpp}.
  • FUNDING.yml: consolidated to GitHub Sponsors (mapmapteam) as the primary
    destination, with Open Collective kept as a secondary option.

Notes

  • Commits are split by concern (Syphon vs in-app links); each compiles on its own.

aalex added 3 commits June 23, 2026 13:56
Publish MapMap's rendered output as a Syphon server so other macOS apps can
receive it ("virtual projector"). Opt-in via a checkable "Publish Syphon
Output" item in the View menu (off by default; state persisted).

- SyphonOutput (+ SyphonServerImpl.mm): wraps SyphonOpenGLServer. Each frame it
  MSAA-resolve-blits the output canvas's framebuffer into the server's FBO and
  publishes it, entirely on the GPU (bindToDrawFrameOfSize/unbindAndPublish).
  The server is created lazily with the output GL context and recreated if the
  context changes.
- OutputGLCanvas publishes the clean composition at the start of
  drawForeground() (before the test-signal/crosshair overlays), at the output
  resolution.
- macOS-only (HAVE_SYPHON-gated); publishes while the output window is open.

Phase 2 (a draggable capture region + custom output resolution) builds on this.
- Add Help menu items "Professional services" (Art Plus Code) and "Support the project", with matching links in the About dialog.
- Replace the redundant "Technical support" item; reorganize the Help menu into free-help / community / commercial groups.
- Add SERVICES_URL and DONATE_URL string constants (MM.h/MM.cpp).
- Consolidate funding: FUNDING.yml points to GitHub Sponsors (mapmapteam) as the primary destination, keeping Open Collective as a secondary option.
@aalex aalex self-assigned this Jun 24, 2026
@aalex aalex merged commit be53ad9 into dev Jun 25, 2026
3 checks passed
@aalex aalex deleted the feat-syphon-output branch June 25, 2026 18:44
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant