<div dir="ltr">Hi Filip,<div><br></div><div>Thanks for your feedback!</div><div>I will update my commit this way!</div><div><br></div><div>When I was writing this code, I was wondering if a rework of the underlying sorting algorithm would make sense.</div><div><br></div><div>Using a stable sorting algorithm would allow the user to choose how he want to sort equal entries in one property. This way, all the extra handling of equal elements can be removed.</div><div><br></div><div>For example when you would like to sort based on Artist, Date, Album, Title, you would click the column headers in reverse order (Title, Album, Date, Artist).</div><div><br></div><div>Do you think this approach would make sense?</div><div class="gmail_extra"><div><div class="m_-2225068834308417344gmail_signature" data-smartmail="gmail_signature"><div dir="ltr"><div><div dir="ltr"><br><div><div style="font-size:12.8000001907349px"><b><font color="#999999">Mit freundlichen Grüßen / Kind regards,</font></b></div><div style="font-size:12.8000001907349px"><font color="#999999">Marcel Schnirring</font></div><div style="font-size:12.8000001907349px"><font color="#999999"><br></font></div><div style="font-size:12.8000001907349px"><font color="#999999" size="1"><i>Heilbronner Strasse 36</i></font></div><div style="font-size:12.8000001907349px"><font color="#999999" size="1"><i>76131 Karlsruhe</i></font></div><div style="font-size:12.8000001907349px"><font color="#999999" size="1"><i>Deutschland / Germany</i></font></div><div style="font-size:12.8000001907349px"><font color="#999999" size="1"><i>Email: <a href="mailto:ms@marcel-schnirring.de" target="_blank">ms@marcel-schnirring.de</a></i></font></div><div style="font-size:12.8000001907349px"><font color="#999999" size="1"><i>Mobile: <a href="tel:%28%2B49%29%20178%20198%2037%2061" value="+491781983761" target="_blank">(+49) 178 198 37 61</a></i></font></div></div></div></div></div></div></div>
<br><div class="gmail_quote">On Sun, Nov 27, 2016 at 9:59 PM, Filip Roséen <span dir="ltr"><<a href="mailto:filip@atch.se" target="_blank">filip@atch.se</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><u></u>


  
  
  
  
  

<div>
<p>Hi Marcel,</p><div><div class="m_-2225068834308417344h5">
<p>On 2016-11-26 23:55, Marcel Schnirring wrote:</p>
<blockquote style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;color:#500050">
<pre><code> Re-asking for review after a week has passed...
 ---
  include/vlc_playlist.h                       |  3 ++-
  src/playlist/sort.c                          | 14 +++++++++++++-
  2 files changed, 15 insertions(+), 2 deletions(-)

 diff --git a/include/vlc_playlist.h b/include/vlc_playlist.h
 index 5fef490..742372c 100644
 --- a/include/vlc_playlist.h
 +++ b/include/vlc_playlist.h
 @@ -186,7 +186,8 @@ struct playlist_t
      DEF( SORT_DESCRIPTION )\
      DEF( SORT_RATING )\
      DEF( SORT_URI )\
 -    DEF( SORT_DISC_NUMBER )
 +    DEF( SORT_DISC_NUMBER )\
 +    DEF( SORT_DATE )

  #define DEF( s ) s,
  enum
 diff --git a/src/playlist/sort.c b/src/playlist/sort.c
 index 588bd35..68c15a5 100644
 --- a/src/playlist/sort.c
 +++ b/src/playlist/sort.c
 @@ -226,6 +226,19 @@ SORTFN( SORT_ALBUM, first, second )
      return i_ret;
  }

 +SORTFN( SORT_DATE, first, second )
 +{
 +    int i_ret = meta_sort( first, second, vlc_meta_Date, true );
 +    /* Items came from the same date: compare the albums */
 +    if( i_ret == 0 )
 +        i_ret = meta_sort( first, second, vlc_meta_Album, false );
 +    /* Items came from the same album: compare the track numbers */
 +    if( i_ret == 0 )
 +        i_ret = meta_sort( first, second, vlc_meta_TrackNumber, true );
 +</code></pre>
</blockquote>
</div></div><p>Given that the above is the exactly same logic as defined by <code>SORTFN( SORT_ALBUM, ... )</code>, you are far better off invoking this function directly rather than explicitly doing the same thing.</p>
<pre><code>SORTFN( SORT_DATE, first, second )
{
  int i_ret = meta_sort( first, second, vlc_meta_Date, true );

  if( i_ret == 0 )
    return proto_SORT_ALBUM( first, second);
}</code></pre>
<p>See <code>SORTFIN( SORT_ARTIST, ... )</code> for an equivalent example.</p><span>
<blockquote style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;color:#500050">
<pre><code> +    return i_ret;
 +}
 +
  SORTFN( SORT_ARTIST, first, second )
  {
      int i_ret = meta_sort( first, second, vlc_meta_Artist, false );
 @@ -361,4 +374,3 @@ static const sortfn_t sorting_fns[NUM_SORT_FNS][2] =
  #define DEF( a ) { cmp_a_##a, cmp_d_##a },
  { VLC_DEFINE_SORT_FUNCTIONS };
  #undef  DEF
 -
 --
 2.7.4</code></pre>
</blockquote>
</span></div>

<br>______________________________<wbr>_________________<br>
vlc-devel mailing list<br>
To unsubscribe or modify your subscription options:<br>
<a href="https://mailman.videolan.org/listinfo/vlc-devel" rel="noreferrer" target="_blank">https://mailman.videolan.org/l<wbr>istinfo/vlc-devel</a><br></blockquote></div><br></div></div>