title: Using QWidget::update() from non-GUI thread
body: <p>Sometimes my application crashes in QWidget::update() that is performing in non-GUI thread.</p>
  
  <p>I am developing an application in which receives video frames from remote host and display them on QWidget.</p>
  
  <p>For this purpose I use libVLC library that gives to me a decoded image. I receive image in libVLC callback, that is performing in separate libVLC thread. In this callback I'm trying to perform QWidget::update() method. Sometimes application crashes, and callstack is somewhere in this method. Here is the my callback code:</p>
  
  
  
  <pre class="lang-c prettyprint-override"><code>//! Called when a video frame is ready to be displayed, according to the vlc clock. 
  //! \c picture is the return value from lockCB().
  
  void VideoWidget::displayCB(void* picture)
  {
      QImage* image = reinterpret_cast&lt;QImage*&gt;(picture);
  
      onScreenPixmapMutex_.lock();
      onScreenPixmap_ = QImage(*image);
      onScreenPixmap_.detach();
      onScreenPixmapMutex_.unlock();
  
      delete image;
  
      update();
  }
  </code></pre>
  
  <p>I know that GUI operations outside the main thread are not allowed in Qt. But according documentation QWidget::update() just schedules a paint event for processing when Qt returns to the main event loop and does not cause an immediate repaint.</p>
  
  <p>The questtion is: is the rule "GUI operations outside the main thread are not allowed" appliable for QWidget::update()? Does this operation belong to "GUI operations"?</p>
  
  <p>I use Qt 4.7.3, the crash repoduces on Windows 7 and Linux.</p>