Dont call exit() from the DRI driver, with AIGLX this is particularly nasty

This commit is contained in:
Ben Skeggs 2006-11-12 02:05:40 +00:00
parent d037c84c33
commit 6464787bfd
4 changed files with 13 additions and 8 deletions

View file

@ -79,7 +79,8 @@ GLboolean nouveauCreateContext( const __GLcontextModes *glVisual,
return GL_FALSE;
/* Create the hardware context */
nouveauFifoInit(nmesa);
if (!nouveauFifoInit(nmesa))
return GL_FALSE;
nouveauObjectInit(nmesa);
/* Init default driver functions then plug in our nouveau-specific functions

View file

@ -109,19 +109,25 @@ void nouveauWaitForIdle(nouveauContextPtr nmesa)
}
// here we call the fifo initialization ioctl and fill in stuff accordingly
void nouveauFifoInit(nouveauContextPtr nmesa)
GLboolean nouveauFifoInit(nouveauContextPtr nmesa)
{
drm_nouveau_fifo_alloc_t fifo_init;
int ret;
ret=drmCommandWriteRead(nmesa->driFd, DRM_NOUVEAU_FIFO_ALLOC, &fifo_init, sizeof(fifo_init));
if (ret)
if (ret) {
FATAL("Fifo initialization ioctl failed (returned %d)\n",ret);
return GL_FALSE;
}
if (drmMap(nmesa->driFd, fifo_init.cmdbuf, fifo_init.cmdbuf_size, &nmesa->fifo.buffer))
if (drmMap(nmesa->driFd, fifo_init.cmdbuf, fifo_init.cmdbuf_size, &nmesa->fifo.buffer)) {
FATAL("Unable to map the fifo\n",ret);
if (drmMap(nmesa->driFd, fifo_init.ctrl, fifo_init.ctrl_size, &nmesa->fifo.mmio))
return GL_FALSE;
}
if (drmMap(nmesa->driFd, fifo_init.ctrl, fifo_init.ctrl_size, &nmesa->fifo.mmio)) {
FATAL("Unable to map the control regs\n",ret);
return GL_FALSE;
}
MESSAGE("Fifo init ok. Using context %d\n", fifo_init.channel);
}

View file

@ -113,7 +113,7 @@ extern void WAIT_RING(nouveauContextPtr nmesa,u_int32_t size);
}while(0)
extern void nouveauWaitForIdle(nouveauContextPtr nmesa);
extern void nouveauFifoInit(nouveauContextPtr nmesa);
extern GLboolean nouveauFifoInit(nouveauContextPtr nmesa);
#endif /* __NOUVEAU_FIFO_H__ */

View file

@ -54,7 +54,6 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
fprintf(stderr, "File %s function %s line %d\n", __FILE__, __FUNCTION__, __LINE__); \
fprintf(stderr, a, ## __VA_ARGS__);\
fprintf(stderr, "***************************************************************************\n");\
exit(0);\
}while(0)
#define FATAL(a, ...) do{\
@ -62,7 +61,6 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
fprintf(stderr, "File %s function %s line %d\n", __FILE__, __FUNCTION__, __LINE__); \
fprintf(stderr, a, ## __VA_ARGS__);\
fprintf(stderr, "***************************************************************************\n");\
exit(0);\
}while(0)
#endif /* __NOUVEAU_MSG_H__ */