[Scummvm-git-logs] scummvm branch-3-0 -> 0f31291d36c6199f0d9f17d521af9312a9323157
lephilousophe
noreply at scummvm.org
Sun Nov 16 20:53:25 UTC 2025
This automated email contains information about 6 new commits which have been
pushed to the 'scummvm' repo located at https://api.github.com/repos/scummvm/scummvm .
Summary:
b02a2794ac BACKENDS: Fix _overlayInGUI improper usages
e55ebd91d8 HYPNO: Fix subtitles
f12776d232 ANDROID: Reset keyboard status at creation
e21475cda5 ANDROID: Update Android Gradle Plugin
844c92e952 MYST3: Don't use presentBuffer with TinyGL
0f31291d36 TINYGL: Add opaque support to RLE blitting routine
Commit: b02a2794acc2aa24bf85591a52ae4e02bf5327a8
https://github.com/scummvm/scummvm/commit/b02a2794acc2aa24bf85591a52ae4e02bf5327a8
Author: Le Philousophe (lephilousophe at users.noreply.github.com)
Date: 2025-11-16T21:53:05+01:00
Commit Message:
BACKENDS: Fix _overlayInGUI improper usages
Aspect ratio correction doesn't depend on if we are in GUI or not but if
the overlay is shown.
The overlay is never A/R corrected.
Changed paths:
backends/graphics/surfacesdl/surfacesdl-graphics.cpp
diff --git a/backends/graphics/surfacesdl/surfacesdl-graphics.cpp b/backends/graphics/surfacesdl/surfacesdl-graphics.cpp
index c46ca6e5285..e8a173fa5c2 100644
--- a/backends/graphics/surfacesdl/surfacesdl-graphics.cpp
+++ b/backends/graphics/surfacesdl/surfacesdl-graphics.cpp
@@ -1242,7 +1242,7 @@ void SurfaceSdlGraphicsManager::internUpdateScreen() {
blackrect.x = ((_videoMode.screenWidth + _gameScreenShakeXOffset) * _videoMode.scaleFactor);
}
- if (_videoMode.aspectRatioCorrection && !_overlayInGUI) {
+ if (_videoMode.aspectRatioCorrection && !_overlayVisible) {
blackrect.h = real2Aspect(blackrect.h - 1) + 1;
}
@@ -1263,7 +1263,7 @@ void SurfaceSdlGraphicsManager::internUpdateScreen() {
blackrect.y = ((_videoMode.screenHeight + _gameScreenShakeYOffset) * _videoMode.scaleFactor);
}
- if (_videoMode.aspectRatioCorrection && !_overlayInGUI) {
+ if (_videoMode.aspectRatioCorrection && !_overlayVisible) {
blackrect.y = real2Aspect(blackrect.y);
blackrect.h = real2Aspect(blackrect.h + blackrect.y - 1) - blackrect.y + 1;
}
@@ -1450,7 +1450,7 @@ void SurfaceSdlGraphicsManager::internUpdateScreen() {
dst_x *= scale1;
dst_y *= scale1;
- if (_videoMode.aspectRatioCorrection && !_overlayInGUI)
+ if (_videoMode.aspectRatioCorrection && !_overlayVisible)
dst_y = real2Aspect(dst_y);
_scaler->scale((byte *)srcSurf->pixels + (src_x + _maxExtraPixels) * bpp + (src_y + _maxExtraPixels) * srcPitch, srcPitch,
@@ -1462,7 +1462,7 @@ void SurfaceSdlGraphicsManager::internUpdateScreen() {
r->h = dst_h * scale1;
#ifdef USE_ASPECT
- if (_videoMode.aspectRatioCorrection && orig_dst_y < height && !_overlayInGUI)
+ if (_videoMode.aspectRatioCorrection && orig_dst_y < height && !_overlayVisible)
r->h = stretch200To240((uint8 *) _hwScreen->pixels, dstPitch, r->w, r->h, r->x, r->y, orig_dst_y * scale1, _videoMode.filtering, convertSDLPixelFormat(_hwScreen->format));
#endif
}
@@ -1487,7 +1487,7 @@ void SurfaceSdlGraphicsManager::internUpdateScreen() {
#ifdef USE_SDL_DEBUG_FOCUSRECT
// We draw the focus rectangle on top of everything, to assure it's easily visible.
- // Of course when the overlay is visible we do not show it, since it is only for game
+ // Of course when the GUI overlay is visible we do not show it, since it is only for game
// specific focus.
if (_enableFocusRect && !_overlayInGUI) {
int x = _focusRect.left + _currentShakeXOffset;
@@ -1507,7 +1507,7 @@ void SurfaceSdlGraphicsManager::internUpdateScreen() {
w *= scale1;
h *= scale1;
- if (_videoMode.aspectRatioCorrection && !_overlayInGUI)
+ if (_videoMode.aspectRatioCorrection && !_overlayVisible)
y = real2Aspect(y);
if (h > 0 && w > 0) {
@@ -1852,7 +1852,7 @@ void SurfaceSdlGraphicsManager::addDirtyRect(int x, int y, int w, int h, bool in
}
#ifdef USE_ASPECT
- if (_videoMode.aspectRatioCorrection && !_overlayInGUI && !realCoordinates)
+ if (_videoMode.aspectRatioCorrection && !inOverlay && !realCoordinates)
makeRectStretchable(x, y, w, h, _videoMode.filtering);
#endif
@@ -1962,7 +1962,7 @@ void SurfaceSdlGraphicsManager::setFocusRectangle(const Common::Rect &rect) {
// We just fake this as a dirty rect for now, to easily force a screen update whenever
// the rect changes.
- addDirtyRect(_focusRect.left, _focusRect.top, _focusRect.width(), _focusRect.height(), _overlayVisible);
+ addDirtyRect(_focusRect.left, _focusRect.top, _focusRect.width(), _focusRect.height(), false);
#endif
}
@@ -1976,7 +1976,7 @@ void SurfaceSdlGraphicsManager::clearFocusRectangle() {
// We just fake this as a dirty rect for now, to easily force a screen update whenever
// the rect changes.
- addDirtyRect(_focusRect.left, _focusRect.top, _focusRect.width(), _focusRect.height(), _overlayVisible);
+ addDirtyRect(_focusRect.left, _focusRect.top, _focusRect.width(), _focusRect.height(), false);
#endif
}
Commit: e55ebd91d8a73569ed69e7d5e87b87de73374494
https://github.com/scummvm/scummvm/commit/e55ebd91d8a73569ed69e7d5e87b87de73374494
Author: Le Philousophe (lephilousophe at users.noreply.github.com)
Date: 2025-11-16T21:53:05+01:00
Commit Message:
HYPNO: Fix subtitles
Support subtitle_dev setting and hide the overlay when subtitles are
done.
Changed paths:
engines/hypno/hypno.cpp
diff --git a/engines/hypno/hypno.cpp b/engines/hypno/hypno.cpp
index b1e52e168e4..fb3984e9556 100644
--- a/engines/hypno/hypno.cpp
+++ b/engines/hypno/hypno.cpp
@@ -322,7 +322,7 @@ void HypnoEngine::runIntro(MVideo &video) {
delete _subtitles;
_subtitles = nullptr;
- g_system->clearOverlay();
+ g_system->hideOverlay();
}
void HypnoEngine::runCode(Code *code) { error("Function \"%s\" not implemented", __FUNCTION__); }
@@ -612,16 +612,24 @@ void HypnoEngine::loadSubtitles(const Common::Path &path) {
subPath = subPath.appendComponent(language);
subPath = subPath.appendComponent(subPathStr);
debugC(1, kHypnoDebugMedia, "Loading subtitles from %s", subPath.toString().c_str());
- if (Common::File::exists(subPath)) {
- _subtitles = new Video::Subtitles();
- _subtitles->loadSRTFile(subPath);
- g_system->showOverlay(false);
- adjustSubtitleSize();
- } else {
+
+ if (_subtitles != nullptr) {
delete _subtitles;
_subtitles = nullptr;
- g_system->clearOverlay();
+ g_system->hideOverlay();
}
+
+ _subtitles = new Video::Subtitles();
+ _subtitles->loadSRTFile(subPath);
+ if (!_subtitles->isLoaded()) {
+ delete _subtitles;
+ _subtitles = nullptr;
+ return;
+ }
+
+ g_system->showOverlay(false);
+ g_system->clearOverlay();
+ adjustSubtitleSize();
}
Commit: f12776d2325a53129873c2f7bb3c43e63c9ef4e0
https://github.com/scummvm/scummvm/commit/f12776d2325a53129873c2f7bb3c43e63c9ef4e0
Author: Le Philousophe (lephilousophe at users.noreply.github.com)
Date: 2025-11-16T21:53:05+01:00
Commit Message:
ANDROID: Reset keyboard status at creation
When quitting and restarting the Android application, the process can
get recycled.
In this case, the JNI shared object is never discarded and we start with
a dirty state where the keyboard status is kept from the last run.
Fixes Trac#16337.
Changed paths:
backends/platform/android/android.cpp
backends/platform/android/jni-android.cpp
diff --git a/backends/platform/android/android.cpp b/backends/platform/android/android.cpp
index c9e4cf04840..1815776895b 100644
--- a/backends/platform/android/android.cpp
+++ b/backends/platform/android/android.cpp
@@ -185,6 +185,7 @@ OSystem_Android::OSystem_Android(int audio_sample_rate, int audio_buffer_size) :
_audio_sample_rate(audio_sample_rate),
_audio_buffer_size(audio_buffer_size),
_screen_changeid(0),
+ _virtkeybd_on(false),
_mixer(0),
_event_queue_lock(0),
_touch_pt_down(),
diff --git a/backends/platform/android/jni-android.cpp b/backends/platform/android/jni-android.cpp
index d382be3e8e9..86fc6c8f128 100644
--- a/backends/platform/android/jni-android.cpp
+++ b/backends/platform/android/jni-android.cpp
@@ -819,6 +819,8 @@ void JNI::create(JNIEnv *env, jobject self, jobject asset_manager,
// initial value of zero!
sem_init(&pause_sem, 0, 0);
+ virt_keyboard_state = false;
+
_asset_archive = new AndroidAssetArchive(asset_manager);
assert(_asset_archive);
Commit: e21475cda56578f42789565206ce3a45a515db12
https://github.com/scummvm/scummvm/commit/e21475cda56578f42789565206ce3a45a515db12
Author: Le Philousophe (lephilousophe at users.noreply.github.com)
Date: 2025-11-16T21:53:05+01:00
Commit Message:
ANDROID: Update Android Gradle Plugin
Changed paths:
dists/android/build.gradle
diff --git a/dists/android/build.gradle b/dists/android/build.gradle
index a47aeaccd2f..9589cc57f29 100644
--- a/dists/android/build.gradle
+++ b/dists/android/build.gradle
@@ -5,7 +5,7 @@ buildscript {
mavenCentral()
}
dependencies {
- classpath 'com.android.tools.build:gradle:8.13.0'
+ classpath 'com.android.tools.build:gradle:8.13.1'
}
}
Commit: 844c92e9523d77e0f50d56c802c0dfa821c8e5af
https://github.com/scummvm/scummvm/commit/844c92e9523d77e0f50d56c802c0dfa821c8e5af
Author: Le Philousophe (lephilousophe at users.noreply.github.com)
Date: 2025-11-16T21:53:05+01:00
Commit Message:
MYST3: Don't use presentBuffer with TinyGL
This is not supported.
Also add missing presentBuffer calls in the OpenGL renderers.
Fixes Trac#16255.
Changed paths:
engines/myst3/gfx_opengl.cpp
engines/myst3/gfx_opengl_shaders.cpp
engines/myst3/gfx_opengl_texture.cpp
engines/myst3/transition.cpp
diff --git a/engines/myst3/gfx_opengl.cpp b/engines/myst3/gfx_opengl.cpp
index 87be6db3ee9..28686f6a34d 100644
--- a/engines/myst3/gfx_opengl.cpp
+++ b/engines/myst3/gfx_opengl.cpp
@@ -308,6 +308,7 @@ Graphics::Surface *OpenGLRenderer::getScreenshot() {
Graphics::Surface *s = new Graphics::Surface();
s->create(screen.width(), screen.height(), Texture::getRGBAPixelFormat());
+ g_system->presentBuffer();
glReadPixels(screen.left, screen.top, screen.width(), screen.height(), GL_RGBA, GL_UNSIGNED_BYTE, s->getPixels());
flipVertical(s);
diff --git a/engines/myst3/gfx_opengl_shaders.cpp b/engines/myst3/gfx_opengl_shaders.cpp
index 5c9ca164329..925afcd9e62 100644
--- a/engines/myst3/gfx_opengl_shaders.cpp
+++ b/engines/myst3/gfx_opengl_shaders.cpp
@@ -375,6 +375,7 @@ Graphics::Surface *ShaderRenderer::getScreenshot() {
Graphics::Surface *s = new Graphics::Surface();
s->create(screen.width(), screen.height(), Texture::getRGBAPixelFormat());
+ g_system->presentBuffer();
glReadPixels(screen.left, screen.top, screen.width(), screen.height(), GL_RGBA, GL_UNSIGNED_BYTE, s->getPixels());
flipVertical(s);
diff --git a/engines/myst3/gfx_opengl_texture.cpp b/engines/myst3/gfx_opengl_texture.cpp
index 3484535ee01..3319fa59599 100644
--- a/engines/myst3/gfx_opengl_texture.cpp
+++ b/engines/myst3/gfx_opengl_texture.cpp
@@ -140,6 +140,7 @@ void OpenGLTexture::copyFromFramebuffer(const Common::Rect &screen) {
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
+ g_system->presentBuffer();
glCopyTexImage2D(GL_TEXTURE_2D, 0, internalFormat, screen.left, screen.top, internalWidth, internalHeight, 0);
}
diff --git a/engines/myst3/transition.cpp b/engines/myst3/transition.cpp
index ecadd66175a..b1509ce878f 100644
--- a/engines/myst3/transition.cpp
+++ b/engines/myst3/transition.cpp
@@ -80,7 +80,6 @@ void Transition::draw(TransitionType type) {
// Capture a screenshot of the destination node
_vm->drawFrame(true);
- g_system->presentBuffer();
Texture *targetScreenshot = _vm->_gfx->copyScreenshotToTexture();
// Compute the start and end frames for the animation
Commit: 0f31291d36c6199f0d9f17d521af9312a9323157
https://github.com/scummvm/scummvm/commit/0f31291d36c6199f0d9f17d521af9312a9323157
Author: Le Philousophe (lephilousophe at users.noreply.github.com)
Date: 2025-11-16T21:53:05+01:00
Commit Message:
TINYGL: Add opaque support to RLE blitting routine
This fixes Myst3 transitions.
Before commit 5cc4607ff4d6, opaque images had a list of lines generated
covering the whole image.
Changed paths:
graphics/tinygl/zblit.cpp
diff --git a/graphics/tinygl/zblit.cpp b/graphics/tinygl/zblit.cpp
index 3a508083d6c..b55eeeadb7c 100644
--- a/graphics/tinygl/zblit.cpp
+++ b/graphics/tinygl/zblit.cpp
@@ -397,7 +397,20 @@ void BlitImage::tglBlitRLE(int dstX, int dstY, int srcX, int srcY, int srcWidth,
lineIndex++;
}
- if (_binaryTransparent || (kDisableBlending || !kEnableAlphaBlending)) { // If bitmap is binary transparent or if we need complex forms of blending (not just alpha) we need to use writePixel, which is slower
+ if (_opaque) { // This is the degenerate case of RLE where the whole image is affected
+ for (int y = 0; y < clampHeight; y++) {
+ if (kDisableColoring) {
+ memcpy(dstBuf.getRawBuffer(y * fbWidth),
+ srcBuf.getRawBuffer(y * _surface.w), clampWidth * kBytesPerPixel);
+ } else {
+ for(int x = 0; x < clampWidth; x++) {
+ byte aDst, rDst, gDst, bDst;
+ srcBuf.getARGBAt(y * _surface.w + x, aDst, rDst, gDst, bDst);
+ c->fb->writePixel((dstX + x) + (dstY + y) * fbWidth, aDst * aTint, rDst * rTint, gDst * gTint, bDst * bTint);
+ }
+ }
+ }
+ } else if (_binaryTransparent || (kDisableBlending || !kEnableAlphaBlending)) { // If bitmap is binary transparent or if we need complex forms of blending (not just alpha) we need to use writePixel, which is slower
while (lineIndex < _lines.size() && _lines[lineIndex]._y < maxY) {
const BlitImage::Line &l = _lines[lineIndex];
if (l._x < maxX && l._x + l._length > srcX) {
More information about the Scummvm-git-logs
mailing list