[PATCH 1/2] mmdevapi: Truncate strings from PropertyStore's GetValue to 62 chars.

Gabriel Ivăncescu gabrielopcode at gmail.com
Tue May 24 13:08:40 CDT 2022


On 24/05/2022 18:24, Andrew Eikum wrote:
> On Tue, May 24, 2022 at 05:48:58PM +0300, Gabriel Ivăncescu wrote:
>> On 23/05/2022 19:18, Andrew Eikum wrote:
>>> We could try to acquire a shorter name for the underlying device,
>>> somehow, but I'm not sure what options PA and/or ALSA give us. Maybe
>>> use PA_PROP_DEVICE_PRODUCT_NAME instead, for example.
>>>
>>
>> I experimented with a few options. Unfortunately, they don't really work.
>>
>> PA_PROP_DEVICE_PRODUCT_NAME is either not available in most cases, or it's
>> the same as the description (which is what is currently used), and when it
>> is different, the returned name is way too short (e.g. just "D30"). However
>> the problem is that it's not available for "virtual" sources (or sinks), and
>> in this case those are the largest offenders, e.g. "Monitor of <some really
>> long name>" which makes the long name even longer.
>>
>> In the case of the linked bug, it's the builtin soundcard (on motherboard)
>> that is too long and it seems the product name won't help there at all
>> anyway, even without the "Monitor of" source.
>>
>> I was thinking of using the pulse_name in case the description is longer
>> than 62 chars, but apparently those can get pretty long too. Though I
>> suppose using it as a fallback should work in most cases... And pick it if
>> it's shorter in such case.
>>
> 
> I don't know. I don't think it's great to truncate useful information
> just to work around one game bug.
> 
> My best idea is to try to construct some useful string out of the
> information we can get from Pulse. Looking at the pulse properties for
> the hardware I happen to have, I see:
> 
>      device.description = "Starship/Matisse HD Audio Controller Digital Stereo (IEC958)"
> 
> This is pretty long. Here are some other names:
> 
>      device.product.name = "Starship/Matisse HD Audio Controller"
>      device.profile.description = "Digital Stereo (IEC958)"
>      alsa.card_name = "HD-Audio Generic"
> 
> Maybe we could use some combination of those? Maybe choose whichever
> of device.product.name and alsa.card_name is shorter, and append the
> profile description if it doesn't become too long?
> 
> As for monitoring, we can use:
> 
>      device.class = "monitor"
> 
> to build our own "Monitor of" string.
> 
> Andrew
> 

Interesting. I'll probably try something that builds it incrementally, 
and stop if any stage makes it > 62 chars and just return what I built 
until then. First I'll try the entire description though (like now), and 
only fall back to this if it's > 62 chars (this is also the only way to 
build it for virtual sinks that only give description).



More information about the wine-devel mailing list