Revert "libobs: Correctly set texture size"

This reverts commit 90a409fe58.

Reverts #7077 for now. This really shouldn't be done so close to
release. This crash technically only happens under very niche scenarios,
and the fix seems to have some other potential issues. Prematurely
merged by Jim.
master
jp9000 2022-08-18 11:00:13 -07:00
parent 87a69f7623
commit 6abf89af21
2 changed files with 11 additions and 7 deletions

View File

@ -744,6 +744,7 @@ struct obs_source {
bool async_flip;
bool async_linear_alpha;
bool async_active;
bool async_update_texture;
bool async_unbuffered;
bool async_decoupled;
struct obs_source_frame *async_preload_frame;

View File

@ -1206,6 +1206,10 @@ static void async_tick(obs_source_t *source)
source->last_sys_timestamp = sys_time;
pthread_mutex_unlock(&source->async_mutex);
if (source->cur_async_frame)
source->async_update_texture =
set_async_texture_size(source, source->cur_async_frame);
}
void obs_source_video_tick(obs_source_t *source, float seconds)
@ -1971,6 +1975,9 @@ static inline bool init_gpu_conversion(struct obs_source *source,
bool set_async_texture_size(struct obs_source *source,
const struct obs_source_frame *frame)
{
enum convert_type cur =
get_convert_type(frame->format, frame->full_range, frame->trc);
if (source->async_width == frame->width &&
source->async_height == frame->height &&
source->async_format == frame->format &&
@ -2000,9 +2007,7 @@ bool set_async_texture_size(struct obs_source *source,
const enum gs_color_format format =
convert_video_format(frame->format, frame->trc);
const enum convert_type type =
get_convert_type(frame->format, frame->full_range, frame->trc);
const bool async_gpu_conversion = (type != CONVERT_NONE) &&
const bool async_gpu_conversion = (cur != CONVERT_NONE) &&
init_gpu_conversion(source, frame);
source->async_gpu_conversion = async_gpu_conversion;
if (async_gpu_conversion) {
@ -2377,9 +2382,6 @@ static void obs_source_update_async_video(obs_source_t *source)
source->async_rendered = true;
if (frame) {
const bool async_update_texture =
set_async_texture_size(source, frame);
check_to_swap_bgrx_bgra(source, frame);
if (!source->async_decoupled ||
@ -2389,10 +2391,11 @@ static void obs_source_update_async_video(obs_source_t *source)
source->timing_set = true;
}
if (async_update_texture) {
if (source->async_update_texture) {
update_async_textures(source, frame,
source->async_textures,
source->async_texrender);
source->async_update_texture = false;
}
obs_source_release_frame(source, frame);