On 06/15/11 05:35 PM, Peter Hutterer wrote:
>> -static void
>> -PrintChildren(WindowPtr p1, int indent)
>> +static const char *
>> +get_window_name(WindowPtr pWin)
>>  {
>> -    WindowPtr p2;
>> -    int i;
>> +    PropertyPtr prop;
>> +    CompScreenPtr comp_screen = GetCompScreen(pWin->drawable.pScreen);
>> +
>> +    if (comp_screen && pWin == comp_screen->pOverlayWin)
>> +        return overlay_win_name;
>>  
>> -    while (p1)
>> +    for (prop = wUserProps(pWin); prop; prop = prop->next)
>>      {
>> -    p2 = p1->firstChild;
>> -        ErrorF("[dix] ");
>> -    for (i=0; i<indent; i++) ErrorF(" ");
>> -    ErrorF("%lx\n", p1->drawable.id);
>> -    RegionPrint(&p1->clipList);
>> -    PrintChildren(p2, indent+4);
>> -    p1 = p1->nextSib;
>> +        if (prop->type != XA_STRING || !prop->data ||
>> +            prop->propertyName != XA_WM_NAME)
>> +            continue;
>>      }
>> +    if (!prop)
>> +        return NULL;
>> +
>> +    return prop->data;
>>  }
> 
> I don't seem to have a single window with a name. Can't spot the bug at a
> glance though 
> 
> fwiw, xprop lists WM_NAME(STRING) = "xeyes" with WM_NAME being XA_WM_NAME

Shouldn't there be something after the continue statement in the block?
Otherwise the if is pointless - if the if statement is true, go to the
next iteration, else fall through to the next iteration.

Should it be reversed to:
           if (prop->type == XA_STRING && prop->data &&
               prop->propertyName == XA_WM_NAME)
                   return prop->data;
        }
        return NULL;
}

or even just break instead of continue?

-- 
        -Alan Coopersmith-        [email protected]
         Oracle Solaris Platform Engineering: X Window System

_______________________________________________
[email protected]: X.Org development
Archives: http://lists.x.org/archives/xorg-devel
Info: http://lists.x.org/mailman/listinfo/xorg-devel

Reply via email to