rem: g_assert (bvw->priv->vo_driver != NULL);
add: if (bvw->priv->vo_driver == NULL) {  if (bvw->priv->ao_driver != NULL) { xine_close_audio_driver (bvw->priv->xine, bvw->priv->ao_driver); } xine_exit (bvw->priv->xine);   g_source_remove (bvw->priv->tick_id); g_idle_remove_by_data (bvw); g_async_queue_unref (bvw->priv->queue); g_free (bvw->priv->vis_name); g_object_unref (G_OBJECT (bvw->priv->gc)); g_free (bvw->priv->vis_name); g_free (bvw->priv); g_free (bvw);  g_set_error (err, 0, 0, _("No video output is available. Make sure that the program is correctly installed.")); return NULL; }
context: bacon_video_widget_new (int width, int height, gboolean null_out, GError **err){	BaconVideoWidget *bvw;	xine_cfg_entry_t entry;	bvw = BACON_VIDEO_WIDGET (g_object_new			(bacon_video_widget_get_type (), NULL));	bvw->priv->null_out = null_out;	/* defaults are fine if both are negative */	if (width > 0 && height > 0)	{		/* figure out the missing measure from the other one		 * with a 4:3 ratio */		if (width <= 0)			width = (int) (height * 4 / 3);		if (height <= 0)			height = (int) (width * 3 / 4);	} else {		width = 0;		height = 0;	}	GTK_WIDGET(bvw)->requisition.width = width;	GTK_WIDGET(bvw)->requisition.height = height;	bvw->priv->init_width = width;	bvw->priv->init_height = height;	/* load the video drivers */	bvw->priv->ao_driver = load_audio_out_driver (bvw, err);	if (err != NULL && *err != NULL)		return NULL;	bvw->priv->vo_driver = load_video_out_driver (bvw, TRUE);	//FIXME	g_assert (bvw->priv->vo_driver != NULL);	if (bvw->priv->null_out != FALSE)	{		bvw_config_help_num (bvw->priv->xine, "video.num_buffers",				5, &entry);		entry.num_value = 5;	} else {		bvw_config_help_num (bvw->priv->xine, "video.num_buffers",				500, &entry);		entry.num_value = 500;	}	xine_config_update_entry (bvw->priv->xine, &entry);	bvw->priv->stream = xine_stream_new (bvw->priv->xine,			bvw->priv->ao_driver, bvw->priv->vo_driver);	bvw->priv->ev_queue = xine_event_new_queue (bvw->priv->stream);	return GTK_WIDGET (bvw);}