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

« back to all changes in this revision

Viewing changes to randr/randr.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:
54
54
int     RREventBase;
55
55
int     RRErrorBase;
56
56
RESTYPE RRClientType, RREventType; /* resource types for event masks */
57
 
static int RRClientPrivateKeyIndex;
58
 
DevPrivateKey RRClientPrivateKey = &RRClientPrivateKeyIndex;
 
57
DevPrivateKeyRec RRClientPrivateKeyRec;
59
58
 
60
 
static int rrPrivKeyIndex;
61
 
DevPrivateKey rrPrivKey = &rrPrivKeyIndex;
 
59
DevPrivateKeyRec rrPrivKeyRec;
62
60
 
63
61
static void
64
62
RRClientCallback (CallbackListPtr       *list,
98
96
    for (j = pScrPriv->numOutputs - 1; j >= 0; j--)
99
97
        RROutputDestroy (pScrPriv->outputs[j]);
100
98
    
101
 
    xfree (pScrPriv->crtcs);
102
 
    xfree (pScrPriv->outputs);
103
 
    xfree (pScrPriv);
 
99
    free(pScrPriv->crtcs);
 
100
    free(pScrPriv->outputs);
 
101
    free(pScrPriv);
104
102
    RRNScreens -= 1;    /* ok, one fewer screen with RandR running */
105
103
    return (*pScreen->CloseScreen) (i, pScreen);    
106
104
}
215
213
            return FALSE;
216
214
        RRGeneration = serverGeneration;
217
215
    }
 
216
    if (!dixRegisterPrivateKey(&rrPrivKeyRec, PRIVATE_SCREEN, 0))
 
217
        return FALSE;
 
218
 
218
219
    return TRUE;
219
220
}
220
221
 
225
226
    if (!RRInit ())
226
227
        return FALSE;
227
228
 
228
 
    pScrPriv = (rrScrPrivPtr) xcalloc (1, sizeof (rrScrPrivRec));
 
229
    pScrPriv = (rrScrPrivPtr) calloc(1, sizeof (rrScrPrivRec));
229
230
    if (!pScrPriv)
230
231
        return FALSE;
231
232
 
302
303
                *pHead = pRREvent->next;
303
304
        }
304
305
    }
305
 
    xfree ((pointer) pRREvent);
 
306
    free((pointer) pRREvent);
306
307
    return 1;
307
308
}
308
309
 
316
317
    for (pCur = *pHead; pCur; pCur = pNext) {
317
318
        pNext = pCur->next;
318
319
        FreeResource (pCur->clientResource, RRClientType);
319
 
        xfree ((pointer) pCur);
 
320
        free((pointer) pCur);
320
321
    }
321
 
    xfree ((pointer) pHead);
 
322
    free((pointer) pHead);
322
323
    return 1;
323
324
}
324
325
 
329
330
 
330
331
    if (RRNScreens == 0) return;
331
332
 
332
 
    if (!dixRequestPrivate(RRClientPrivateKey,
333
 
                                sizeof (RRClientRec) +
334
 
                                screenInfo.numScreens * sizeof (RRTimesRec)))
 
333
    if (!dixRegisterPrivateKey(&RRClientPrivateKeyRec, PRIVATE_CLIENT,
 
334
                               sizeof (RRClientRec) +
 
335
                               screenInfo.numScreens * sizeof (RRTimesRec)))
335
336
        return;
336
337
    if (!AddCallback (&ClientStateCallback, RRClientCallback, 0))
337
338
        return;