I would like to write a plugin to randomize playlist on load.
After some research online and through code of the Winamp API, I used code snippet to redefine WinProc function and was able to log all messages received by Winamp.
I found out, that IPC_PLAYLIST_MODIFIED is received whenever the playlist changes. I use this message to randomize list after adding files/directories to playlist. However Winamp receives this message for every item in the folder being added. Since I want to randomize only once after all elements are added - I wait for the last message. To find this last message I use timer and wait for 2 more seconds after each message. If no more messages come up - I consider the latter to be the trigger. Is there any better way to find out that whole directory was added?
I also want to randomize after Winamp load, but no IPC_PLAYLIST_MODIFIED. Therefore I wait for IPC_CB_OUTPUTCHANGED and then do the randomization. I also set up flag, so I won't react on similar message more then once. I decided to use this message since it was the last message in the log of Winamp message after startup and before it started to play first song. Is there are a better way to find out when Winamp is fully loaded?
Finally, as these two occasions I need to randomize list. I found playlist and plLoadEx folders in API. There is a class api_playlistmanager, which allows to randomize a list, however it requires a pointer to ifc_playlist. I couldn't find neither the class definition nor the way to get this pointer. Please advise...
After some research online and through code of the Winamp API, I used code snippet to redefine WinProc function and was able to log all messages received by Winamp.
I found out, that IPC_PLAYLIST_MODIFIED is received whenever the playlist changes. I use this message to randomize list after adding files/directories to playlist. However Winamp receives this message for every item in the folder being added. Since I want to randomize only once after all elements are added - I wait for the last message. To find this last message I use timer and wait for 2 more seconds after each message. If no more messages come up - I consider the latter to be the trigger. Is there any better way to find out that whole directory was added?
I also want to randomize after Winamp load, but no IPC_PLAYLIST_MODIFIED. Therefore I wait for IPC_CB_OUTPUTCHANGED and then do the randomization. I also set up flag, so I won't react on similar message more then once. I decided to use this message since it was the last message in the log of Winamp message after startup and before it started to play first song. Is there are a better way to find out when Winamp is fully loaded?
Finally, as these two occasions I need to randomize list. I found playlist and plLoadEx folders in API. There is a class api_playlistmanager, which allows to randomize a list, however it requires a pointer to ifc_playlist. I couldn't find neither the class definition nor the way to get this pointer. Please advise...
Comment