Sounds good. The only drawback is that GetGlobalTimeStamp was added at CC 2015.3. GetArtTimeStamp has been around since CS6. I wonder if this is updated whenever any child art changes. If so you could probably just do GetFirstArtOfLayer for each layer and check the timestamp for CS6 to CC 2015.
GetArtTimeStamp takes a AIArtTimeStampOptions which can be kAITimeStampOfArt, kAITimeStampOfChildren, kAITimeStampMaxFromArtAndChildren. So it seems like that should cover what you're talking about.
I did check with multiple documents open and everything seems to work fine. A kAIArtPropertiesChangedNotifier is sent when each document is brought to the front, but, for my purposes, triggering a redraw is fine at that point.
One thing I've noticed with my method is that kAIArtPropertiesChangedNotifier is triggered while the user is editing text. I'm going to have to find a solution, since it does cause some lag as each character is entered. Is there a method to determine if the user is currently entering type in a text frame art?
Wow, these artwork update notifiers don't seem to fire in a consistent way. I've done some more testing and it looks like my lagging text input problem goes away if I do my updates in response to kAIArtSelectionChangedNotifier instead of kAIArtPropertiesChangedNotifier. Though they both seem to fire together most of the time? The message data "count" that comes along with both of these notifiers is the same when they both fire, so that's one way to ignore one or the other.
The docs don't say too much about the differences between the two notifiers.