Forum: Poser - OFFICIAL


Subject: Poser 8 advertised!

raven opened this issue on Jun 25, 2009 · 1706 posts


bagginsbill posted Thu, 27 August 2009 at 9:53 AM

The GUI and the Poser app server interact somewhat asynchronously and the server is multi-threaded. So any absolute concept of order is lost, because the messages flying back and forth get processed at a time when the info is available. For example, the GUI might ask the server to scan "foo" and also scan "bar" and usually the results would come back in that order. But if foo is a very full folder, and bar is close to empty, the scan for bar might complete first. So the GUI would get the results in a different order than it asked. If further deep scanning is required for bar (because you had it open before you exited) then scanning of those sub-folders would be requested as soon as the scan of the parent folder was returned to the GUI. Then, those subfolders themselves might have different sizes and different subsets open, etc. It gets complicated very fast.

So all I can tell you is the order in which the GUI asks for things.

First the GUI asks the server for the names of the categories. Nothing happens until it learns the category names. (Yes Poser only has 9 fixed categories, but the GUI can support any category system, perhaps even be used in other SM applications, so it wants to be told - nothing is hard coded.) Included in the response are category names (language translated, of course) the icons to use for them, etc. The category list defines a category order.

For each category (in order) the GUI sends the message scanCategory to the server. The responses can come back in random order, but usually don't, I think. For each category, the server produces a list of top-level containers, one per loaded runtime. These are listed in runtime library order, as defined in LibraryPrefs.xml. So basically the first pass ordering is Category/Library. The results of each scanCategory response are used to populate each of the nine library trees. (Yes there are nine trees, one per category, but you only ever see one at a time. An interesting idea for people with dual monitors is to show all nine at once on a giant display.)

As each scanCategory response is loaded into the GUI, it sweeps through the top level folders of it to see if any of those is supposed to be open. If it is, the GUI sends the message scanFolder to the server, passing the particular folder name. The response to that will populate the children of a folder, usually in alphabetical order. (If the server delivers scans out of order, the GUI sorts them anyway, but it processes them in the order delivered.)

Each of those calls to scanFolder sends a response to the GUI. This new list is examined to see if there are more folders in there that should be opened, because you had them open in the past. This process branches out like a nuclear reaction, scanning recursively as needed.


Renderosity forum reply notifications are wonky. If I read a follow-up in a thread, but I don't myself reply, then notifications no longer happen AT ALL on that thread. So if I seem to be ignoring a question, that's why. (Updated September 23, 2019)