[Development] Help debugging "impossible condition"
Olivier Goffart
olivier at woboq.com
Mon May 14 13:16:46 CEST 2012
On Monday 14 May 2012 11:42:33 Thiago Macieira wrote:
> On segunda-feira, 14 de maio de 2012 11.36.04, Thiago Macieira wrote:
> > On domingo, 6 de maio de 2012 07.47.44, Thiago Macieira wrote:
> > > On sábado, 5 de maio de 2012 23.18.18, Giuseppe D'Angelo wrote:
> > > > qgraphicsview.cpp-2790- d->useLastMouseEvent = false;
> > > > qgraphicsview.cpp-2791- // a hack to pass a viewport pointer to
> > > > the scene inside the leave event
> > > > qgraphicsview.cpp:2792: Q_ASSERT(event->d == 0);
> > > > qgraphicsview.cpp:2793: event->d =
> > > > reinterpret_cast<QEventPrivate *>(viewport());
> > > > qgraphicsview.cpp-2794- QApplication::sendEvent(d->scene,
> > > > event);
> > > > qgraphicsview.cpp-2795- break;
> > >
> > > Argh!
> > >
> > > Does anyone have a clean suggestion on how to fix this hack?
> >
> > Since no one has a suggestion on how to fix the hack, I'll close the task
> > and abandon the patch that cleans up QEvent.
I think you should keep the change, just remove the assert.
> > I'll add a ### to QEvent saying that the d pointer cannot be used because
> > of a hack in graphics view.
d pointer can be used if the graphics view hack is taken in account at the
time. (example: if there is ever a QEventPrivate, we can change QGraphicsView
as this point to use it)
> Actually, I have a better idea: I'll just add an extra pointer to QEvent for
> the sole reason of letting QGraphicsView use it.
>
> If someone thinks that adding 4 or 8 bytes to EVERY EVENT is a bad idea,
> please help me come up with a better alternative.
I think it is a bad idea.
My proposed alternative is in the gerrit comments:
- Keep your change that adds the appropriate copy contstructor, but take in
account the graphicsview hack instead of asserting)
- Maybe even void *extra_ptr is a better name than 'd', as long as its usage
is internal.
--
Olivier
Woboq - Qt services and support - http://woboq.com
More information about the Development
mailing list