examples: warn when texture locking fails

New SDL seems to fail when locking YUY2 now.
This commit is contained in:
Wim Taymans 2025-03-20 11:21:56 +01:00
parent 4e0545aa04
commit 7662a01f85
6 changed files with 21 additions and 6 deletions

View file

@ -304,7 +304,8 @@ static int port_set_format(void *object,
SDL_TEXTUREACCESS_STREAMING,
d->format.size.width,
d->format.size.height);
SDL_LockTexture(d->texture, NULL, &dest, &d->stride);
if (SDL_LockTexture(d->texture, NULL, &dest, &d->stride) < 0)
return -EINVAL;
SDL_UnlockTexture(d->texture);
}

View file

@ -210,7 +210,8 @@ static int port_set_format(void *object, enum spa_direction direction, uint32_t
SDL_TEXTUREACCESS_STREAMING,
d->format.size.width,
d->format.size.height);
SDL_LockTexture(d->texture, NULL, &dest, &d->stride);
if (SDL_LockTexture(d->texture, NULL, &dest, &d->stride) < 0)
return -EINVAL;
SDL_UnlockTexture(d->texture);
}

View file

@ -332,7 +332,10 @@ on_stream_param_changed(void *_data, uint32_t id, const struct spa_pod *param)
SDL_TEXTUREACCESS_STREAMING,
data->size.width,
data->size.height);
SDL_LockTexture(data->texture, NULL, &d, &data->stride);
if (SDL_LockTexture(data->texture, NULL, &d, &data->stride) < 0) {
pw_stream_set_error(stream, -EINVAL, "invalid texture format");
return;
}
SDL_UnlockTexture(data->texture);
/* a SPA_TYPE_OBJECT_ParamBuffers object defines the acceptable size,

View file

@ -382,7 +382,10 @@ on_stream_param_changed(void *_data, uint32_t id, const struct spa_pod *param)
SDL_TEXTUREACCESS_STREAMING,
data->size.width,
data->size.height);
SDL_LockTexture(data->texture, NULL, &d, &data->stride);
if (SDL_LockTexture(data->texture, NULL, &d, &data->stride) < 0) {
pw_stream_set_error(stream, -EINVAL, "invalid texture format");
return;
}
SDL_UnlockTexture(data->texture);
switch(sdl_format) {

View file

@ -225,7 +225,10 @@ on_stream_param_changed(void *_data, uint32_t id, const struct spa_pod *param)
SDL_TEXTUREACCESS_STREAMING,
data->size.width,
data->size.height);
SDL_LockTexture(data->texture, NULL, &d, &data->stride);
if (SDL_LockTexture(data->texture, NULL, &d, &data->stride) < 0) {
pw_stream_set_error(stream, -EINVAL, "invalid texture format");
return;
}
SDL_UnlockTexture(data->texture);
/* a SPA_TYPE_OBJECT_ParamBuffers object defines the acceptable size,

View file

@ -348,7 +348,11 @@ on_stream_param_changed(void *_data, uint32_t id, const struct spa_pod *param)
SDL_TEXTUREACCESS_STREAMING,
data->size.width,
data->size.height);
SDL_LockTexture(data->texture, NULL, &d, &data->stride);
if (SDL_LockTexture(data->texture, NULL, &d, &data->stride) < 0) {
fprintf(stderr, "Couldn't lock texture: %s\n", SDL_GetError());
pw_stream_set_error(stream, -EINVAL, "invalid format");
return;
}
SDL_UnlockTexture(data->texture);
switch(sdl_format) {