Skip to content

Commit 5511365

Browse files
Merge pull request #643 from lethal-guitar/more-fixes
More fixes
2 parents 51cd406 + 4b55c38 commit 5511365

File tree

6 files changed

+30
-16
lines changed

6 files changed

+30
-16
lines changed

src/renderer/renderer.cpp

Lines changed: 20 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -848,18 +848,9 @@ struct Renderer::Impl {
848848
}
849849

850850
if (state.mRenderTargetTexture != mLastCommittedState.mRenderTargetTexture) {
851-
base::Extents framebufferSize;
852-
if (state.mRenderTargetTexture != 0) {
853-
const auto iData = mRenderTargetDict.find(state.mRenderTargetTexture);
854-
assert(iData != mRenderTargetDict.end());
855-
856-
glBindFramebuffer(GL_FRAMEBUFFER, iData->second.mFbo);
857-
framebufferSize = iData->second.mSize;
858-
} else {
859-
glBindFramebuffer(GL_FRAMEBUFFER, 0);
860-
framebufferSize = mWindowSize;
861-
}
851+
const auto framebufferSize = currentFramebufferSize();
862852

853+
commitRenderTarget(state);
863854
glViewport(0, 0, framebufferSize.width, framebufferSize.height);
864855
commitClipRect(state, framebufferSize);
865856
commitVertexAttributeFormat();
@@ -903,6 +894,17 @@ struct Renderer::Impl {
903894
}
904895

905896

897+
void commitRenderTarget(const State& state) {
898+
if (state.mRenderTargetTexture != 0) {
899+
const auto iData = mRenderTargetDict.find(state.mRenderTargetTexture);
900+
assert(iData != mRenderTargetDict.end());
901+
glBindFramebuffer(GL_FRAMEBUFFER, iData->second.mFbo);
902+
} else {
903+
glBindFramebuffer(GL_FRAMEBUFFER, 0);
904+
}
905+
}
906+
907+
906908
void commitClipRect(
907909
const State& state,
908910
const base::Extents& framebufferSize
@@ -1016,6 +1018,8 @@ struct Renderer::Impl {
10161018
const int width,
10171019
const int height
10181020
) {
1021+
submitBatch();
1022+
10191023
const auto textureHandle =
10201024
createGlTexture(GLsizei(width), GLsizei(height), nullptr);
10211025

@@ -1029,8 +1033,8 @@ struct Renderer::Impl {
10291033
textureHandle,
10301034
0);
10311035

1032-
mStateChanged = true;
10331036
glBindTexture(GL_TEXTURE_2D, mLastUsedTexture);
1037+
commitRenderTarget(mLastCommittedState);
10341038

10351039
mRenderTargetDict.insert({textureHandle, {{width, height}, fboHandle}});
10361040

@@ -1039,6 +1043,8 @@ struct Renderer::Impl {
10391043

10401044

10411045
TextureId createTexture(const data::Image& image) {
1046+
submitBatch();
1047+
10421048
// OpenGL wants pixel data in bottom-up format, so transform it accordingly
10431049
std::vector<std::uint8_t> pixelData;
10441050
pixelData.resize(image.width() * image.height() * 4);
@@ -1068,6 +1074,8 @@ struct Renderer::Impl {
10681074

10691075

10701076
void destroyTexture(TextureId texture) {
1077+
submitBatch();
1078+
10711079
const auto iRenderTarget = mRenderTargetDict.find(texture);
10721080
if (iRenderTarget != mRenderTargetDict.end()) {
10731081
glDeleteFramebuffers(1, &iRenderTarget->second.mFbo);

src/ui/duke_script_runner.cpp

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -381,7 +381,6 @@ void DukeScriptRunner::interpretNextAction() {
381381
*mpResourceBundle,
382382
showImage.image);
383383
imageTexture.render(0, 0);
384-
mpRenderer->submitBatch();
385384
},
386385

387386
[this](const Delay& delay) {
@@ -536,7 +535,6 @@ void DukeScriptRunner::drawSprite(
536535

537536
renderer::Texture spriteTexture(mpRenderer, image);
538537
spriteTexture.render(topLeftPx + drawOffsetPx);
539-
mpRenderer->submitBatch();
540538
}
541539

542540

src/ui/ingame_menu.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -468,7 +468,7 @@ void IngameMenu::enterMenu(const MenuType type) {
468468
};
469469

470470
auto saveSlotSelectionEventHook = [this](const SDL_Event& event) {
471-
if (isConfirmButton(event)) {
471+
if (isMenuConfirmButton(event)) {
472472
const auto enteredViaGamepad =
473473
event.type == SDL_CONTROLLERBUTTONDOWN;
474474

src/ui/menu_navigation.cpp

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,14 @@ bool isConfirmButton(const SDL_Event& event) {
4747
}
4848

4949

50+
bool isMenuConfirmButton(const SDL_Event& event) {
51+
return
52+
isConfirmButton(event) ||
53+
(isNonRepeatKeyDown(event) && event.key.keysym.sym == SDLK_SPACE);
54+
55+
}
56+
57+
5058
bool isCancelButton(const SDL_Event& event) {
5159
const auto escapePressed = isNonRepeatKeyDown(event) &&
5260
event.key.keysym.sym == SDLK_ESCAPE;

src/ui/menu_navigation.hpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@ namespace rigel::ui {
2929
bool isNonRepeatKeyDown(const SDL_Event& event);
3030
bool isButtonPress(const SDL_Event& event);
3131
bool isConfirmButton(const SDL_Event& event);
32+
bool isMenuConfirmButton(const SDL_Event& event);
3233
bool isCancelButton(const SDL_Event& event);
3334
bool isQuitConfirmButton(const SDL_Event& event);
3435

src/ui/movie_player.cpp

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,6 @@ void MoviePlayer::playMovie(
5252

5353
auto baseImage = renderer::Texture(mpRenderer, movie.mBaseImage);
5454
baseImage.render(0, 0);
55-
mpRenderer->submitBatch();
5655
}
5756

5857
mAnimationFrames = utils::transformed(movie.mFrames,

0 commit comments

Comments
 (0)