Skip to content

Instantly share code, notes, and snippets.

View garbear's full-sized avatar
🚀
Blasting off

Garrett Brown garbear

🚀
Blasting off
View GitHub Profile
# Task: Fix xbmc/xbmc issue #29426
Repository:
https://github.com/xbmc/xbmc
Issue:
https://github.com/xbmc/xbmc/issues/29426

RetroPlayer GUI capture synchronization — validation report

  1. Root cause. The GUI consumer handoff was tied to each render sample, while pool reuse was tied solely to the CPU reference count. The immediate flush made each RENDERED fence visible to the shared client context, but repeated fullscreen/OSD sampling generated repeated mid-frame submissions. Removing that flush alone would leave returned captures available before their latest RENDERED fence had been submitted.
  2. Repeated-flush lifecycle. Each CRPRendererFBO::Render() waits for READY, samples the texture, then calls FinishRender() through its scope guard.
Investigate and fix Kodi issue #29394:
https://github.com/xbmc/xbmc/issues/29394
Repository:
https://github.com/xbmc/xbmc
The reported VS 2026 / MSVC 14.51 UWP x64 build fails with:
`STL1011: The /await compiler option, <experimental/coroutine> ... are deprecated`
Fix the remaining blocker in PR #28886.
In `CGUITextLayout::WrapText()`, the “word without trailing break char” branch currently checks:
```cpp
if (currentWidth + wordWidth <= maxWidth && breakPos != current)
```
This is incorrect because `currentWidth` and `wordWidth` come from independently shaped/measured spans. `CGUIFontTTF::GetTextWidthInternal()` treats the final glyph specially, and shaping/kerning can depend on the complete span, so these widths are not guaranteed to be additive.
Review the current branch for PR #29240 and fix only these blockers. Do not broaden the scope or refactor unrelated optical-drive code.
1. Fix scanner teardown in `CWin32StorageProvider::StopScanForPresentMedia()`:
* Explicitly stop/join `m_presentMediaScanner` with `StopThread()` before destroying/resetting it.
* Do not rely on `CThread`'s base destructor to stop the worker after derived destruction has started.
* Keep the shutdown ordering compatible with `CServiceManager::DeinitStageThree()`.
2. Fix the stale `PRESENT_AT_STARTUP` media race:

Scope

Keep changes focused on the task that was requested.

  • Make the smallest change that fully solves the stated problem.
  • Treat the issue, pull request, or user request as the scope boundary.
  • Do not fix unrelated problems discovered while working on the requested change.
  • Do not expand a bug fix into a refactor unless the refactor is necessary to fix the bug.
  • Do not add speculative hardening for hypothetical scenarios that are outside the stated scope.
  • Do not preserve legacy behavior or compatibility when the task explicitly allows or requires a breaking change.
<?xml version="1.0" ?>
<buttonmap>
<device name="SDL Game Controller" provider="sdl" buttoncount="15" axiscount="6">
<configuration />
<controller id="game.controller.default">
<feature name="a" button="0" />
<feature name="b" button="1" />
<feature name="back" button="6" />
<feature name="guide" button="14" />
<feature name="leftbumper" button="4" />
<?xml version="1.0" ?>
<buttonmap>
<device name="Wireless Controller" provider="directinput" vid="054C" pid="09CC" buttoncount="14" hatcount="1" axiscount="6">
<configuration>
<axis index="4" center="-1" range="1" />
</configuration>
<controller id="game.controller.default">
<feature name="a" axis="-3" />
<feature name="back" axis="+3" />
<feature name="start" button="6" />
#include <iostream>
using namespace std;
class String
{
public:
String() { }
~String()
{
@garbear
garbear / default.py
Created February 20, 2013 02:47
Addons.GetAddons( { "enabled": "uninstalled" } ) and xbmcaddon.Addon(installedOnly=False) test
import os, sys
import xbmc, xbmcaddon
import json
def log(msg):
xbmc.log('GETADDONS TEST: ' + str(msg), level=xbmc.LOGDEBUG)
if ( __name__ == "__main__" ):
installedAddons = []
installedJson = xbmc.executeJSONRPC('{ "jsonrpc": "2.0", "id": 1, "method": "Addons.GetAddons", "params": { "type": "xbmc.gameclient", "enabled": "all" } }')