Am 14.06.2012 16:43, schrieb Dave Airlie: > From: Dave Airlie <airl...@redhat.com> > > This is a precursor for reusing this code to init gpu screens. > > Signed-off-by: Dave Airlie <airl...@redhat.com> > --- > dix/dispatch.c | 44 +++++++++++++++++++++++++++----------------- > 1 file changed, 27 insertions(+), 17 deletions(-) > > diff --git a/dix/dispatch.c b/dix/dispatch.c > index b88f974..5448298 100644 > --- a/dix/dispatch.c > +++ b/dix/dispatch.c > @@ -3724,27 +3724,11 @@ with its screen number, a pointer to its ScreenRec, > argc, and argv. > > */ > > -int > -AddScreen(Bool (*pfnInit) (ScreenPtr /*pScreen */ , > - int /*argc */ , > - char ** /*argv */ > - ), int argc, char **argv) > +static int init_screen(ScreenPtr pScreen, int i) > { > - > - int i; > int scanlinepad, format, depth, bitsPerPixel, j, k; > - ScreenPtr pScreen; > - > - i = screenInfo.numScreens; > - if (i == MAXSCREENS) > - return -1; > - > - pScreen = (ScreenPtr) calloc(1, sizeof(ScreenRec)); > - if (!pScreen) > - return -1; > > if (!dixAllocatePrivates(&pScreen->devPrivates, PRIVATE_SCREEN)) { > - free(pScreen); > return -1; > } > pScreen->myNum = i; > @@ -3782,7 +3766,33 @@ AddScreen(Bool (*pfnInit) (ScreenPtr /*pScreen */ , > PixmapWidthPaddingInfo[depth].notPower2 = 0; > } > } > + return 0; > +} > + > +int > +AddScreen(Bool (*pfnInit) (ScreenPtr /*pScreen */ , > + int /*argc */ , > + char ** /*argv */ > + ), int argc, char **argv) > +{ > > + int i; > + ScreenPtr pScreen; > + Bool ret; > + > + i = screenInfo.numScreens; > + if (i == MAXSCREENS) > + return -1; > +
is it better to return -2 here ? you can still check via if (AddScreen < 0) but you can see the difference between running out-of-screens (bad) and out-of-memory (panic). just my to 2 cents, re, wh > + pScreen = (ScreenPtr) calloc(1, sizeof(ScreenRec)); > + if (!pScreen) > + return -1; > + > + ret = init_screen(pScreen, i); > + if (ret) { > + free(pScreen); > + return ret; > + } > /* This is where screen specific stuff gets initialized. Load the > screen structure, call the hardware, whatever. > This is also where the default colormap should be allocated and _______________________________________________ xorg-devel@lists.x.org: X.Org development Archives: http://lists.x.org/archives/xorg-devel Info: http://lists.x.org/mailman/listinfo/xorg-devel