[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