[Development] possible change in behavior: QGuiApplication::primaryScreen() can return null
Harri Porten
porten at froglogic.com
Fri Mar 6 09:34:49 CET 2015
Hi!
I see that the first decisive commit is already merged but I'd like to
comment on it anyway:
On Mon, 2 Mar 2015, Rutledge Shawn wrote:
> It may be a surprise though, for some applications, that
> QGuiApplication::primaryScreen() can return null in the case where there
> is really no screen attached. It’s a rare use case, but it’s possible
> that some applications could crash if they are using that pointer at the
> wrong time, without checking. And there are also some platforms where a
> dummy screen will normally exist even if no actual monitors are
> connected. It’s just that it doesn’t seem to be necessary to have one
> on xcb, so we are trying to avoid needing to create one artificially.
> It seems right to have the code modeling the real world: if there is
> nothing on which you can view the graphical output of your application,
> then there should not be a QScreen instance.
>
> Does anyone have any objection?
I would favor an "invalid" QScreen instance to be returned instead. At
least from the public QGuiApplication API.
A function that "maybe" returns null on "some platforms" puts an onus on a
diligent developer using this function. Thus work is created for everyone
to cover a scenario that will happen for a very few in very seldom cases.
Our own software was not prepared for a similar case until last week: we
relied on the xcb plugin returning an X11 Display pointer when querying it
for "display". Until the first customer had build Qt without xlib
support...
Harri.
PS: The documentation of the (internal) QPlatformWindow::screen()
implementation would need updating too:
https://codereview.qt-project.org/#/c/87885/20/src/gui/kernel/qplatformwindow.cpp
More information about the Development
mailing list