[Mesa-dev] [PATCH 3/3] [Bug 38970] [bisected]piglit glx/glx-pixmap-multi failed
Rahul Jain
talentediq at gmail.com
Thu Oct 20 10:36:39 UTC 2016
On Wed, Oct 19, 2016 at 1:24 AM, Nicolai Hähnle <nhaehnle at gmail.com> wrote:
> On 18.10.2016 19:23, Ian Romanick wrote:
>
>> On 09/29/2016 01:55 PM, Anutex wrote:
>>
>>> I tried to debug this issue with changing the condition to check only
>>> bad magic and Error.
>>> And the test passed.
>>>
>>> Though i am not sure what is the correct behaviour if we are in this
>>> condition.
>>> May be we should make some other condition if the Hash Table have the
>>> bucket data.
>>> ---
>>> src/glx/dri2_glx.c | 3 ++-
>>> 1 file changed, 2 insertions(+), 1 deletion(-)
>>>
>>> diff --git a/src/glx/dri2_glx.c b/src/glx/dri2_glx.c
>>> index af388d9..a1fd9ff 100644
>>> --- a/src/glx/dri2_glx.c
>>> +++ b/src/glx/dri2_glx.c
>>> @@ -411,12 +411,13 @@ dri2CreateDrawable(struct glx_screen *base, XID
>>> xDrawable,
>>> return NULL;
>>> }
>>>
>>> - if (__glxHashInsert(pdp->dri2Hash, xDrawable, pdraw)) {
>>> + if (__glxHashInsert(pdp->dri2Hash, xDrawable, pdraw) == -1) {
>>>
>>
Instead here can we implement some thing like
if already in table then get drawable and return it (As Ian told)
else destroy Drawables. (same as default)
>> I'm not 100% sure the existing code is wrong. __glxHashInsert returns
>> -1 for an error, and it returns 1 if the key is already in the hash
>> table. In that case we'll leak the memory for the new pdraw, right?
>> That also seems bad.
>>
>> It seems like instead the code should look up xDrawable in the hash
>> table and return the value that's already there. Maybe. I haven't
>> looked at this code in years, so I may be forgetting some subtlety.
>>
>
> dri2DestroyDrawable destroys the pdraw though. It also removes the
> xDrawable entry in the hash table without checking whether it points at
> pdraw or not, so on the surface that looks pretty bogus if we create a
> GLXDrawable twice.
>
> _However_, the real question is what the hash is used for in the first
> place. It looks to me like the hash is actually pretty pointless in the
> pixmap case. And it just so happens that the GLX spec forbids creating a
> GLXDrawable from a Window twice, but it doesn't forbid creating a
> GLXDrawable from a Pixmap twice.
>
> Then again, my GLX knowledge is basically zero, so what do I know :)
>
> Nicolai
>
>
>> (*psc->core->destroyDrawable) (pdraw->driDrawable);
>>> DRI2DestroyDrawable(psc->base.dpy, xDrawable);
>>> free(pdraw);
>>> return None;
>>> }
>>> +
>>>
>>>
>> Spurious whitespace change.
>>
>> /*
>>> * Make sure server has the same swap interval we do for the new
>>>
>>>
>> _______________________________________________
>> mesa-dev mailing list
>> mesa-dev at lists.freedesktop.org
>> https://lists.freedesktop.org/mailman/listinfo/mesa-dev
>>
>>
--
Thanks,
Rahul jain
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.freedesktop.org/archives/mesa-dev/attachments/20161020/5111466e/attachment.html>
More information about the mesa-dev
mailing list