def METHOD_NAME(self, dt):
    del dt
    self._dirty = False
    widget = self.source
    fbo = self.fbo
    # detach the widget from the parent
    parent = widget.parent
    if parent and hasattr(parent, "remove_display_source"):
        parent.remove_display_source(widget)
    # clear the fbo background
    fbo.bind()
    fbo.clear_buffer()
    fbo.release()
    self.effect_widget.add_widget(widget.container)
    fbo.draw()
    fbo.bind()
    data = glReadPixels(0, 0, widget.native_size[0], widget.native_size[1],
                        GL_RGB, GL_UNSIGNED_BYTE)
    fbo.release()
    self.effect_widget.remove_widget(widget.container)
    # reattach to the parent
    if parent and hasattr(parent, "add_display_source"):
        parent.add_display_source(widget)
    if not self.config['only_send_changes'] or self.prev_data != data:
        self.prev_data = data
        self.send(data)