macosx: Rework log message storage and fix filtering
authorMarvin Scholz <epirat07@gmail.com>
Thu, 7 Sep 2017 01:00:15 +0000 (03:00 +0200)
committerMarvin Scholz <epirat07@gmail.com>
Thu, 7 Sep 2017 01:02:00 +0000 (03:02 +0200)
commit660257430f41f106ecb1834af7ccaf2a37a281de
tree063f464b5c6ddf3ef28830cff627191ee7d78efa
parent5a8a8baa91ac8aa0336bda6fa296f5598d23947b
macosx: Rework log message storage and fix filtering

This is a quite large change to how the log message window data storage
works. It completely removes the message buffer that was used.
Instead, the messages are added to the backing array of the array
controller directly. The array controller will not pick up these changes,
so adding a lot of messages at once is not a concern.
The timer is now used to sync the array controller with its backing
array by calling NSArrayControllers `rearrangeObjects`.

The array controller is changed to not clear the predicate on adding
new items, which was the initial reason why the other changes became
necessary, as the array controller would not allow adding objects
that did not match the filter predicate. Adding them to the backing
array and syncing with the array controller by calling rearrangeObjects
seems to be no problem though.

This means filtering is now possible while new messages arrive and
while the filter is set, it will only show new messages matching
the filter, until the filter is unset, at which point it will show
all messages again, as expected.
modules/gui/macosx/UI/LogMessageWindow.xib
modules/gui/macosx/VLCLogWindowController.m