~ubuntu-branches/ubuntu/maverick/xorg-server/maverick-security

« back to all changes in this revision

Viewing changes to hw/xquartz/GL/indirect.c

  • Committer: Bazaar Package Importer
  • Author(s): Christopher James Halse Rogers
  • Date: 2010-08-05 11:25:14 UTC
  • mfrom: (1.1.35 upstream) (0.1.14 experimental)
  • Revision ID: james.westby@ubuntu.com-20100805112514-q4efdgj3nblevos2
Tags: 2:1.8.99.905-1ubuntu1
* Merge from (unreleased) Debian experimental.  Remaining Ubuntu changes:
  - rules, control:
    + Disable SELinux, libaudit-dev is not in main yet (LP 406226).
      Drop libaudit-dev from build-deps.
  - rules: Enable xcsecurity (LP 247537).
  - local/xvfb-run*: Add correct docs about error codes (LP 328205)
  - rules: Add --with-extra-module-dir to support GL alternatives.
  - control: Xvfb depends on xauth, x11-xkb-utils. (LP 500102)
  - rules, local/64-xorg-xkb.rules: Don't use keyboard-configuration
    until it's available.
  - control: Update some versioned Breaks for Ubuntu versions.
  - debian/patches:
    + 100_rethrow_signals.patch:
      When aborting, re-raise signals for apport
    + 109_fix-swcursor-crash.patch:
      Avoid dereferencing null pointer while reloading cursors during
      resume. (LP 371405)
    + 111_armel-drv-fallbacks.patch:
      Add support for armel driver fallbacks.
    + 121_only_switch_vt_when_active.diff:
      Add a check to prevent the X server from changing the VT when killing
      GDM from the console.
    + 122_xext_fix_card32_overflow_in_xauth.patch:
      Fix server crash when “xauth generate” is called with large timeout.
    + 157_check_null_modes.patch, 162_null_crtc_in_rotation.patch,
      166_nullptr_xinerama_keyrepeat.patch, 167_nullptr_xisbread.patch
      169_mipointer_nullptr_checks.patch,
      172_cwgetbackingpicture_nullptr_check.patch:
      Fix various segfaults in xserver by checking pointers for NULL
      values before dereferencing them.
    + 165_man_xorg_conf_no_device_ident.patch
      Correct man page
    + 168_glibc_trace_to_stderr.patch:
      Report abort traces to stderr instead of terminal
    + 184_virtual_devices_autodetect.patch:
      Use vesa for qemu device, which is not supported by cirrus
    + 187_edid_quirk_hp_nc8430.patch:
      Quirk for another LPL monitor (LP 380009)
    + 188_default_primary_to_first_busid.patch:
      Pick the first device and carry on (LP 459512)
    + 189_xserver_1.5.0_bg_none_root.patch:
      Create a root window with no background.
    + 190_cache-xkbcomp_output_for_fast_start_up.patch:
      Cache keyboard settings.
    + 191-Xorg-add-an-extra-module-path.patch:
      Add support for the alternatives module path.
    + 197_xvfb-randr.patch:
      Adds xrandr support to xvfb. (LP 516123)
    + 198_nohwaccess.patch:
      Adds a -nohwaccess argument to make X not access the hardware
      ports directly.
    + 200_randr-null.patch:
      Clarify a pointer initialization.
* Update changelog entries for 1.8.1.902-1 which became 1.8.99.904-1
* Drop 196_xvfbscreeninit-handling.patch: it's semantically empty, and now 
  doesn't apply.  Merge remaining #include change into 197_xvfb-randr.patch
* New upstream version will start correctly when no outputs are connected,
  as long as the video driver can dynamically resize the framebuffer
  (true for all KMS drivers) (LP: #337889)
* New upstream version fixes crash on non-admin logout with KDE (LP: #569879)
* Refresh 111_armel-drv-fallbacks.patch to fix the build on armel

Show diffs side-by-side

added added

removed removed

Lines of Context:
169
169
 
170
170
// some prototypes
171
171
static __GLXscreen * __glXAquaScreenProbe(ScreenPtr pScreen);
172
 
static __GLXdrawable * __glXAquaScreenCreateDrawable(__GLXscreen *screen, DrawablePtr pDraw, int type, XID drawId, __GLXconfig *conf);
 
172
static __GLXdrawable * __glXAquaScreenCreateDrawable(ClientPtr client, __GLXscreen *screen, DrawablePtr pDraw, XID drawId, int type, XID glxDrawId, __GLXconfig *conf);
173
173
 
174
174
static void __glXAquaContextDestroy(__GLXcontext *baseContext);
175
175
static int __glXAquaContextMakeCurrent(__GLXcontext *baseContext);
222
222
  
223
223
    GLAQUA_DEBUG_MSG("glXAquaScreenCreateContext\n");
224
224
    
225
 
    context = xcalloc(1, sizeof (__GLXAquaContext));
 
225
    context = calloc(1, sizeof (__GLXAquaContext));
226
226
    
227
227
    if (context == NULL)
228
228
        return NULL;
241
241
    context->pixelFormat = makeFormat(conf);
242
242
    
243
243
    if (!context->pixelFormat) {
244
 
        xfree(context);
 
244
        free(context);
245
245
        return NULL;
246
246
    }
247
247
 
253
253
    if (gl_err != 0) {
254
254
        ErrorF("CGLCreateContext error: %s\n", CGLErrorString(gl_err));
255
255
        CGLDestroyPixelFormat(context->pixelFormat);
256
 
        xfree(context);
 
256
        free(context);
257
257
        return NULL;
258
258
    }
259
259
    
286
286
      if (context->pixelFormat != NULL)
287
287
          CGLDestroyPixelFormat(context->pixelFormat);
288
288
      
289
 
      xfree(context);
 
289
      free(context);
290
290
    }
291
291
}
292
292
 
566
566
    GLAQUA_DEBUG_MSG("glXAquaScreenDestroy(%p)\n", screen);
567
567
    __glXScreenDestroy(screen);
568
568
 
569
 
    xfree(screen);
 
569
    free(screen);
570
570
}
571
571
 
572
572
/* This is called by __glXInitScreens(). */
578
578
    if (pScreen == NULL) 
579
579
        return NULL;
580
580
 
581
 
    screen = xcalloc(1, sizeof *screen);
 
581
    screen = calloc(1, sizeof *screen);
582
582
 
583
583
    if(NULL == screen)
584
584
        return NULL;
595
595
 
596
596
    __glXScreenInit(&screen->base, pScreen);
597
597
 
598
 
    screen->base.GLXversion = xstrdup("1.4");
599
 
    screen->base.GLXextensions = xstrdup("GLX_SGIX_fbconfig "
600
 
                                         "GLX_SGIS_multisample "
601
 
                                         "GLX_ARB_multisample "
602
 
                                         "GLX_EXT_visual_info "
603
 
                                         "GLX_EXT_import_context ");
 
598
    screen->base.GLXversion = strdup("1.4");
 
599
    screen->base.GLXextensions = strdup("GLX_SGIX_fbconfig "
 
600
                                        "GLX_SGIS_multisample "
 
601
                                        "GLX_ARB_multisample "
 
602
                                        "GLX_EXT_visual_info "
 
603
                                        "GLX_EXT_import_context ");
604
604
    
605
605
    /*We may be able to add more GLXextensions at a later time. */
606
606
    
635
635
     *to validate the test, beyond using gdb with print.
636
636
     */
637
637
 
638
 
    xfree(glxPriv);
 
638
    free(glxPriv);
639
639
}
640
640
 
641
641
static __GLXdrawable *
642
 
__glXAquaScreenCreateDrawable(__GLXscreen *screen,
 
642
__glXAquaScreenCreateDrawable(ClientPtr client,
 
643
                              __GLXscreen *screen,
643
644
                              DrawablePtr pDraw,
 
645
                              XID drawId,
644
646
                              int type,
645
 
                              XID drawId,
 
647
                              XID glxDrawId,
646
648
                              __GLXconfig *conf) {
647
649
  __GLXAquaDrawable *glxPriv;
648
650
 
649
 
  glxPriv = xalloc(sizeof *glxPriv);
 
651
  glxPriv = malloc(sizeof *glxPriv);
650
652
 
651
653
  if(glxPriv == NULL)
652
654
      return NULL;
653
655
 
654
656
  memset(glxPriv, 0, sizeof *glxPriv);
655
657
 
656
 
  if(!__glXDrawableInit(&glxPriv->base, screen, pDraw, type, drawId, conf)) {
657
 
    xfree(glxPriv);
 
658
  if(!__glXDrawableInit(&glxPriv->base, screen, pDraw, type, glxDrawId, conf)) {
 
659
    free(glxPriv);
658
660
    return NULL;
659
661
  }
660
662