Skip to content

[pull] master from ddnet:master - #2

Open
pull[bot] wants to merge 3471 commits into
CoraBitz:masterfrom
ddnet:master
Open

pull[bot] wants to merge 3471 commits into
CoraBitz:masterfrom
ddnet:master

Conversation

@pull

@pull pull Bot commented Jun 4, 2025

Copy link
Copy Markdown

See Commits and Changes for more details.


Created by pull[bot] (v2.0.0-alpha.1)

Can you help keep this open source service alive? 💖 Please sponsor : )

@pull pull Bot added the ⤵️ pull label Jun 4, 2025
def- and others added 29 commits August 22, 2026 11:06
Kept annoying me:

    ld: ignoring duplicate libraries 'libddnet_engine_shared.a'
Max 64 players supported, otherwise doesn't show up in
serverbrowser. Validated against Teeworlds 0.7
Since the ids are translated, it's really easy to accidentally kick the
wrong person.
Co-authored-by: Pioooooo <pioooooo.sun@gmail.com>
The viewport is clamped to an aspect ratio of at most 5:4, leaving an
unrendered area in the window. Both backends were given the same viewport
rectangle with a Y of 0, but OpenGL places it relative to the bottom left
and Vulkan relative to the top left, so the unrendered area ended up on
opposite sides. Input positions from the system are relative to the whole
drawable area and were only correct for the Vulkan placement.

Pass the drawable size along with the viewport rectangle so the OpenGL
backend can convert it, and keep the resulting viewport position to offset
everything else that works in drawable coordinates: the scissor rectangle,
which is relative to the viewport, and the reads for screenshots, the
presented image data and single pixels. All of those were equivalent only
while the viewport was aligned to the bottom of the drawable area.
Touch positions are reported relative to the whole drawable area, which is
larger than the rendered image when the viewport is clamped, so consumers
multiplying them by the screen size got squashed positions. Rescale them to
the image once in CInput, keeping them normalized to the image, and clamp a
finger on the area that is not rendered to onto its edge.
People always complained that lower refresh rate increased input latency
and I assumed it's inherent. This improves the situation by sending the
inputs one loop iteration earlier. At cl_refresh_rate 60 the input is
sent 16ms earlier.
Jupeyy and others added 30 commits September 16, 2026 20:36
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
png_get_image_width, png_get_image_height and png_get_rowbytes all return
unsigned values, and CImageInfo holds the dimensions as size_t already.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
libpng longjmps to the error handler and the cleanup function then reads
the row pointers and the height. The C standard leaves non-volatile
locals that changed between setjmp and longjmp indeterminate.

The info struct is created before the setjmp instead, since
png_create_info_struct never calls the error handler.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
SavePng allocated a buffer per row, copied the image into it, handed the
array of rows to png_write_image and freed it all again, so saving needed
a second copy of the image in memory. png_write_row takes one row at a
time, which can point into the image itself.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Map configs run before the game controller is created, and `pause_game`
is not deferred like `restart` or `change_map`. Same guard as for
`set_team` in #12767.
Tests of votes and client drops need clients that are in game.
`CServer::UpdateDebugDummies` already connects and drops such clients
without a network server, so make it public and cover it with a test.
The tests drive it through `dbg_dummies` like the server tick does.

Keep the config a test changes to that test, since the fixture works on
the global config.
WavpackOpenFileInputEx() returns a pointer to WavpackContext structure that should be taken care of if no longer needed.
The client targets the inactive connection and sends Cl_PracticeTeleport so the server only teleports the sender, with no dummy distinction. While paused, use the camera center to match /tc.

Co-authored-by: Cursor <cursoragent@cursor.com>
Check for null termination directly instead of calling `str_length` each iteration.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.