@mottosso mottosso released this Feb 28, 2017 · 254 commits to master since this release

Assets 2

splash

New Interprocess Communication Foundation

This is a major release and introduces several improvements over the previous version.

See here for implementation details.


Usage

Register dependencies and show.

1. Register at run-time

from pyblish_qml import api
api.register_python_executable("C:/Python27/python.exe")
api.register_pyqt5("C:/modules/python-qt5")

2. Register via environment

$ set PYBLISH_QML_PYTHON_EXECUTABLE=c:\python36\python.exe
$ set PYBLISH_QML_PYQT5=c:\modules\python-qt5

Show the GUI either at run-time or from a terminal.

1. At run-time

import pyblish_qml
pyblish_qml.show()

2. From terminal

$ python -m pyblish_qml

QML will launch on-demand, with a splash screen if relevant.


Returning from Sleep

Due to the way communication between GUI and host was implemented, returning from sleep carried an opportunity for glitches in messages being sent. The communication used to occur over a dedicated port, one for every host interested in speaking with QML along with a fixed port for the GUI itself.

Now communication instead happens via standard in/out, meaning one less man in the middle to worry about.


Long-running publishes

Because communication happened via sockets, both the host and GUI acted as a web-server that sent and awaited messages from and to each other. Sometimes, due to the nature of messages passing through a middle man, the host and GUI must continually query each other for their existence - a process known as "heartbeat".

  • "Are you still there?"
  • "Yes"
  • "Are you still there?"
  • "Yes"
  • "Are you still there?"
  • ...

On not responding, the GUI will assume the host is no longer there and quit. The trouble with this is that sometimes the host is there, but is simply too busy to respond. Such as when performing a long-running geometry cache.

This is also resolved by direct communication and no middle-man, meaning no more heartbeats and accidental exit.


Multiple Users

All currently logged on users share sockets. Which means QML cannot know whether a host is asking it to appear from one user or another. This inhibited the ability to use QML from more than one user at a time.

With this release, this is no longer an issue.


Concurrent Publishing

Users may now launch multiple GUIs from many hosts and publish in parallel. This was not possible before due to every host sharing a single running instance of pyblis-qml.

As a side-effect of this however, it does mean each GUI now occupies its own memory (~50 mb) and launches individually which isn't as instant as before (1-7 seconds depending on disk access performance).


Connection Refused

No more network connection means no more asking the OS nicely for permission to communicate via sockets, and no more denials.


Splash Screen

Here's a little sneak peak of what the new splash screen looks like as well.

Enjoy!