| 1422 | } |
| 1423 | |
| 1424 | bool SetSourcei64v(ALsource *Source, ALCcontext *Context, SourceProp prop, const al::span<const ALint64SOFT> values) |
| 1425 | { |
| 1426 | ALfloat fvals[MaxValues]; |
| 1427 | ALint ivals[MaxValues]; |
| 1428 | |
| 1429 | switch(prop) |
| 1430 | { |
| 1431 | case AL_SOURCE_TYPE: |
| 1432 | case AL_BUFFERS_QUEUED: |
| 1433 | case AL_BUFFERS_PROCESSED: |
| 1434 | case AL_SOURCE_STATE: |
| 1435 | case AL_SAMPLE_OFFSET_LATENCY_SOFT: |
| 1436 | case AL_SAMPLE_OFFSET_CLOCK_SOFT: |
| 1437 | /* Query only */ |
| 1438 | SETERR_RETURN(Context, AL_INVALID_OPERATION, false, |
| 1439 | "Setting read-only source property 0x%04x", prop); |
| 1440 | |
| 1441 | /* 1x int */ |
| 1442 | case AL_SOURCE_RELATIVE: |
| 1443 | case AL_LOOPING: |
| 1444 | case AL_SEC_OFFSET: |
| 1445 | case AL_SAMPLE_OFFSET: |
| 1446 | case AL_BYTE_OFFSET: |
| 1447 | case AL_DIRECT_FILTER_GAINHF_AUTO: |
| 1448 | case AL_AUXILIARY_SEND_FILTER_GAIN_AUTO: |
| 1449 | case AL_AUXILIARY_SEND_FILTER_GAINHF_AUTO: |
| 1450 | case AL_DIRECT_CHANNELS_SOFT: |
| 1451 | case AL_DISTANCE_MODEL: |
| 1452 | case AL_SOURCE_RESAMPLER_SOFT: |
| 1453 | case AL_SOURCE_SPATIALIZE_SOFT: |
| 1454 | CHECKSIZE(values, 1); |
| 1455 | CHECKVAL(values[0] <= INT_MAX && values[0] >= INT_MIN); |
| 1456 | |
| 1457 | ivals[0] = static_cast<ALint>(values[0]); |
| 1458 | return SetSourceiv(Source, Context, prop, {ivals, 1u}); |
| 1459 | |
| 1460 | /* 1x uint */ |
| 1461 | case AL_BUFFER: |
| 1462 | case AL_DIRECT_FILTER: |
| 1463 | CHECKSIZE(values, 1); |
| 1464 | CHECKVAL(values[0] <= UINT_MAX && values[0] >= 0); |
| 1465 | |
| 1466 | ivals[0] = static_cast<ALint>(values[0]); |
| 1467 | return SetSourceiv(Source, Context, prop, {ivals, 1u}); |
| 1468 | |
| 1469 | /* 3x uint */ |
| 1470 | case AL_AUXILIARY_SEND_FILTER: |
| 1471 | CHECKSIZE(values, 3); |
| 1472 | CHECKVAL(values[0] <= UINT_MAX && values[0] >= 0 && values[1] <= UINT_MAX && values[1] >= 0 |
| 1473 | && values[2] <= UINT_MAX && values[2] >= 0); |
| 1474 | |
| 1475 | ivals[0] = static_cast<ALint>(values[0]); |
| 1476 | ivals[1] = static_cast<ALint>(values[1]); |
| 1477 | ivals[2] = static_cast<ALint>(values[2]); |
| 1478 | return SetSourceiv(Source, Context, prop, {ivals, 3u}); |
| 1479 | |
| 1480 | /* 1x float */ |
| 1481 | case AL_CONE_INNER_ANGLE: |
no test coverage detected