recalculate dpi on different platform

The scale ``factor`` will always be 1 if the output scale does not change. So I default set ``factor`` to 1. If the event happens, the listener will get the latest scale and recalculate dpi.
From the [wayland doc](http://wayland.freedesktop.org/docs/html/protocol-spec-interface-wl_output.html) it says ''This event contains scaling geometry information that is not in the geometry event. It may be sent after binding the output object or if the output scale changes later. If it is not sent, the client should assume a scale of 1.'' 
I actually don't quite understand how it works so I guess maybe we could default set ``scale`` to 1. If the scale changes later maybe it would be bigger than 1 or something.