TaskMovie: Don't force workaround if Interop is available

This commit is contained in:
korenkonder
2025-05-21 23:21:01 +03:00
parent 312a2c3fb9
commit ba02cdda12
3 changed files with 24 additions and 20 deletions
+9 -9
View File
@@ -1728,21 +1728,21 @@ bool pv_game_pv_data::dsc_ctrl(float_t delta_time, int64_t curr_time,
if (!app::TaskWork::check_task_ready(task_movie_get(i)))
continue;
TaskMovie::DispState disp_state = TaskMovie::DispState::None;
TaskMovie::DispType disp_type = TaskMovie::DispType::None;
if (pv_game_get()->data.movie_index == i) {
if (!pv_game->data.enable_movie)
state = 0;
switch (state) {
case 1:
disp_state = TaskMovie::DispState::Disp;
disp_type = TaskMovie::DispType::SpriteTextute;
break;
case 2:
disp_state = TaskMovie::DispState::Hide;
disp_type = TaskMovie::DispType::Textute;
break;
}
}
task_movie_get(i)->disp_state = disp_state;
task_movie_get(i)->disp_type = disp_type;
break;
}
} break;
@@ -1984,26 +1984,26 @@ bool pv_game_pv_data::dsc_ctrl(float_t delta_time, int64_t curr_time,
for (int32_t m = 0; m < TASK_MOVIE_COUNT; m++)
if (app::TaskWork::check_task_ready(task_movie_get(m)))
task_movie_get(m)->disp_state = TaskMovie::DispState::None;
task_movie_get(m)->disp_type = TaskMovie::DispType::None;
if (index != -1 && app::TaskWork::check_task_ready(task_movie_get(index))) {
task_movie_get(index)->Play();
pv_game_get()->data.movie_index = index;
movie_play_time_set(curr_time);
TaskMovie::DispState disp_state = TaskMovie::DispState::None;
TaskMovie::DispType disp_type = TaskMovie::DispType::None;
if (!pv_game->data.enable_movie)
state = 0;
switch (state) {
case 1:
disp_state = TaskMovie::DispState::Disp;
disp_type = TaskMovie::DispType::SpriteTextute;
break;
case 2:
disp_state = TaskMovie::DispState::Hide;
disp_type = TaskMovie::DispType::Textute;
break;
}
task_movie_get(index)->disp_state = disp_state;
task_movie_get(index)->disp_type = disp_type;
}
} break;
case DSC_FT_CHARA_LIGHT: {
+11 -7
View File
@@ -205,7 +205,7 @@ void TaskMovie::Player::UpdateInteropTexture(TaskMovie::PlayerVideoParams* playe
}
TaskMovie::TaskMovie() : player(), player_video_params(), tex(), pause(), wait_play() {
disp_state = TaskMovie::DispState::Disp;
disp_type = TaskMovie::DispType::SpriteTextute;
state = TaskMovie::State::Wait;
}
@@ -242,12 +242,16 @@ bool TaskMovie::ctrl() {
if (!tex)
tex = sub_14041E560();
if (disp_state != TaskMovie::DispState::None)
if (disp_type != TaskMovie::DispType::None)
player->GetInteropTexture(tex);
}
if (!player->interop_texture && !no_interop)
task_movie_player_no_interop.insert({ player, {} }).first->second.Create();
if (player && !player->interop_texture
&& !no_interop && disp_type != TaskMovie::DispType::None) {
HRESULT hr = player->player->GetGLDXIntreropTexture(&player->interop_texture);
if (hr < S_FALSE)
task_movie_player_no_interop.insert({ player, {} }).first->second.Create();
}
}
return false;
}
@@ -273,7 +277,7 @@ bool TaskMovie::dest() {
}
void TaskMovie::disp() {
if (state != TaskMovie::State::Disp || disp_state != TaskMovie::DispState::Disp || !tex)
if (state != TaskMovie::State::Disp || disp_type != TaskMovie::DispType::SpriteTextute || !tex)
return;
float_t width = (float_t)player_video_params->width;
@@ -512,7 +516,7 @@ void TaskMovie::Start(const std::string& path) {
bool TaskMovie::Unload() {
bool res = TaskMovie::Shutdown();
disp_state = TaskMovie::DispState::Disp;
disp_type = TaskMovie::DispType::SpriteTextute;
return res;
}
@@ -575,7 +579,7 @@ void TaskMoviePlayerNoInterop::Ctrl(TaskMovie* task_movie,
if (!task_movie->tex)
task_movie->tex = sub_14041E560();
if (task_movie->disp_state != TaskMovie::DispState::None)
if (task_movie->disp_type != TaskMovie::DispType::None)
GetD3D11Texture(player, task_movie->tex);
}
}
+4 -4
View File
@@ -21,10 +21,10 @@ public:
Max,
};
enum class DispState {
enum class DispType {
None = 0,
Disp,
Hide,
SpriteTextute,
Textute,
Max,
};
@@ -83,7 +83,7 @@ public:
};
std::string path;
DispState disp_state;
DispType disp_type;
SprParams spr_params;
State state;
Player* player;