<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40">

<head>
<meta http-equiv=Content-Type content="text/html; charset=us-ascii">
<meta name=Generator content="Microsoft Word 12 (filtered medium)">
<style>
<!--
 /* Font Definitions */
 @font-face
        {font-family:"Cambria Math";
        panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
 /* Style Definitions */
 p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0in;
        margin-bottom:.0001pt;
        font-size:11.0pt;
        font-family:"Calibri","sans-serif";}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:blue;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {mso-style-priority:99;
        color:purple;
        text-decoration:underline;}
span.EmailStyle17
        {mso-style-type:personal-compose;
        font-family:"Calibri","sans-serif";
        color:windowtext;}
.MsoChpDefault
        {mso-style-type:export-only;}
@page WordSection1
        {size:8.5in 11.0in;
        margin:1.0in 1.0in 1.0in 1.0in;}
div.WordSection1
        {page:WordSection1;}
-->
</style>
<!--[if gte mso 9]><xml>
 <o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
 <o:shapelayout v:ext="edit">
  <o:idmap v:ext="edit" data="1" />
 </o:shapelayout></xml><![endif]-->
</head>

<body lang=EN-US link=blue vlink=purple>

<div class=WordSection1>

<p class=MsoNormal>Hello,<o:p></o:p></p>

<p class=MsoNormal><o:p> </o:p></p>

<p class=MsoNormal>I have been working on a permanent fix for an item
duplication bug that exists within the UPnP SD Client. I had submitted a patch
earlier on, but it introduced a possible annoyance to the end-user. Allow me to
explain what the current issues are.<o:p></o:p></p>

<p class=MsoNormal><o:p> </o:p></p>

<p class=MsoNormal>The current fix is essentially only a "small hack".
Although it fixes the problem, it introduces cosmetic issues with the playlist.
For example, when the UPnP Server rebroadcasts it's directory structure, the
VLC Client discards the old directory tree, causing the user to go back to the
root node of the directory. The directory listing is then rebuilt with the new
information, but  the user is forced to traverse through the directory to
find the item they were looking for again. Some servers may not push the
directory structure too often, but we cannot rely on the server, as I would be
annoyed if it were to happen once every 10 minutes.<o:p></o:p></p>

<p class=MsoNormal><o:p> </o:p></p>

<p class=MsoNormal>I have thought up another fix, but this would require
certain features to be present within the VLC services discovery functions.
Currently, services_discovery_AddItem does not allow the programmer to nest
items within one another. It only allows a "2 deep" scope. An example
of the limitation is below:<o:p></o:p></p>

<p class=MsoNormal><o:p> </o:p></p>

<p class=MsoNormal>Root Directory<o:p></o:p></p>

<p class=MsoNormal>  + Item 1<o:p></o:p></p>

<p class=MsoNormal>  + Item 2<o:p></o:p></p>

<p class=MsoNormal><o:p> </o:p></p>

<p class=MsoNormal>services_discovery_AddItem will not let the programmer
specify a child-node to insert items into, so we would not be able to do the
following:<o:p></o:p></p>

<p class=MsoNormal><o:p> </o:p></p>

<p class=MsoNormal>Root Directory<o:p></o:p></p>

<p class=MsoNormal>  + Item 1<o:p></o:p></p>

<p class=MsoNormal>    + Sub Item 1 under Item 1<o:p></o:p></p>

<p class=MsoNormal>  + Item 2<o:p></o:p></p>

<p class=MsoNormal>    + Sub Item 1 of Item 2<o:p></o:p></p>

<p class=MsoNormal>      + Sub-Sub Item 1 of Sub Item
1<o:p></o:p></p>

<p class=MsoNormal><o:p> </o:p></p>

<p class=MsoNormal>This creates a limitation on what we are able to do. If we
were able to do the above, we could simply preserve the old directory listing, then
compare what items do not exist in the new directory listing, then remove them
from the listing that's being shown to the user using services_discovery_RemoveItem.
If new files were introduced within an already existing container, we could simply
insert them with an updated services_discovery_AddItem function.<o:p></o:p></p>

<p class=MsoNormal><o:p> </o:p></p>

<p class=MsoNormal>I hope I explained this clearly. Please let me know if I
need to explain anything further.<o:p></o:p></p>

<p class=MsoNormal><o:p> </o:p></p>

<p class=MsoNormal>Thanks for reading,<o:p></o:p></p>

<p class=MsoNormal>Austin Burrow<o:p></o:p></p>

</div>

</body>

</html>