src/events/default_cursor.h
author Sam Lantinga <slouken@libsdl.org>
Wed, 03 Jun 2009 04:37:27 +0000
changeset 3162 dc1eb82ffdaa
parent 2859 99210400e8b9
child 3697 f7b03b6838cb
permissions -rw-r--r--
Von: Thomas Zimmermann
Betreff: [SDL] [PATCH] Make static variables const
Datum: Tue, 19 May 2009 19:45:37 +0200

Hi,

this is a set of simple changes which make some of SDL's internal static
arrays constant. The purpose is to shrink the number of write-able
static bytes and thus increase the number of memory pages shared between
SDL applications.

The patch set is against trunk@4513. Each of the attached patch files is
specific to a sub-system. The set is completed by a second mail, because
of the list's 40 KiB limit.

The files readelf-r4513.txt and readelf-const-patch.txt where made by
calling 'readelf -S libSDL.so'. They show the difference in ELF sections
without and with the patch. Some numbers measured on my x86-64:

Before

[13] .rodata PROGBITS 00000000000eaaa0 000eaaa0
0000000000008170 0000000000000000 A 0 0 32
[19] .data.rel.ro PROGBITS 00000000003045e0 001045e0
00000000000023d0 0000000000000000 WA 0 0 32
[23] .data PROGBITS 00000000003076e0 001076e0
0000000000004988 0000000000000000 WA 0 0 32

After

[13] .rodata PROGBITS 00000000000eaaa0 000eaaa0
0000000000009a50 0000000000000000 A 0 0 32
[19] .data.rel.ro PROGBITS 0000000000306040 00106040
0000000000002608 0000000000000000 WA 0 0 32
[23] .data PROGBITS 0000000000309360 00109360
0000000000002e88 0000000000000000 WA 0 0 32

The size of the write-able data section decreased considerably. Some
entries became const-after-relocation, while most of its content went
straight into the read-only data section.

Best regards, Thomas
     1 /*
     2     SDL - Simple DirectMedia Layer
     3     Copyright (C) 1997-2009 Sam Lantinga
     4 
     5     This library is free software; you can redistribute it and/or
     6     modify it under the terms of the GNU Lesser General Public
     7     License as published by the Free Software Foundation; either
     8     version 2.1 of the License, or (at your option) any later version.
     9 
    10     This library is distributed in the hope that it will be useful,
    11     but WITHOUT ANY WARRANTY; without even the implied warranty of
    12     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
    13     Lesser General Public License for more details.
    14 
    15     You should have received a copy of the GNU Lesser General Public
    16     License along with this library; if not, write to the Free Software
    17     Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
    18 
    19     Sam Lantinga
    20     slouken@libsdl.org
    21 */
    22 
    23 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 
    24  * Default cursor - it happens to be the Mac cursor, but could be anything   */
    25 
    26 #define DEFAULT_CWIDTH	16
    27 #define DEFAULT_CHEIGHT	16
    28 #define DEFAULT_CHOTX	0
    29 #define DEFAULT_CHOTY	0
    30 
    31 /* Added a real MacOS cursor, at the request of Luc-Olivier de Charrière */
    32 #define USE_MACOS_CURSOR
    33 
    34 #ifdef USE_MACOS_CURSOR
    35 
    36 static const unsigned char default_cdata[] = {
    37     0x00, 0x00,
    38     0x40, 0x00,
    39     0x60, 0x00,
    40     0x70, 0x00,
    41     0x78, 0x00,
    42     0x7C, 0x00,
    43     0x7E, 0x00,
    44     0x7F, 0x00,
    45     0x7F, 0x80,
    46     0x7C, 0x00,
    47     0x6C, 0x00,
    48     0x46, 0x00,
    49     0x06, 0x00,
    50     0x03, 0x00,
    51     0x03, 0x00,
    52     0x00, 0x00
    53 };
    54 
    55 static const unsigned char default_cmask[] = {
    56     0xC0, 0x00,
    57     0xE0, 0x00,
    58     0xF0, 0x00,
    59     0xF8, 0x00,
    60     0xFC, 0x00,
    61     0xFE, 0x00,
    62     0xFF, 0x00,
    63     0xFF, 0x80,
    64     0xFF, 0xC0,
    65     0xFF, 0xE0,
    66     0xFE, 0x00,
    67     0xEF, 0x00,
    68     0xCF, 0x00,
    69     0x87, 0x80,
    70     0x07, 0x80,
    71     0x03, 0x00
    72 };
    73 
    74 #else
    75 
    76 static const unsigned char default_cdata[] = {
    77     0x00, 0x00,
    78     0x40, 0x00,
    79     0x60, 0x00,
    80     0x70, 0x00,
    81     0x78, 0x00,
    82     0x7C, 0x00,
    83     0x7E, 0x00,
    84     0x7F, 0x00,
    85     0x7F, 0x80,
    86     0x7C, 0x00,
    87     0x6C, 0x00,
    88     0x46, 0x00,
    89     0x06, 0x00,
    90     0x03, 0x00,
    91     0x03, 0x00,
    92     0x00, 0x00
    93 };
    94 
    95 static const unsigned char default_cmask[] = {
    96     0x40, 0x00,
    97     0xE0, 0x00,
    98     0xF0, 0x00,
    99     0xF8, 0x00,
   100     0xFC, 0x00,
   101     0xFE, 0x00,
   102     0xFF, 0x00,
   103     0xFF, 0x80,
   104     0xFF, 0xC0,
   105     0xFF, 0x80,
   106     0xFE, 0x00,
   107     0xEF, 0x00,
   108     0x4F, 0x00,
   109     0x07, 0x80,
   110     0x07, 0x80,
   111     0x03, 0x00
   112 };
   113 
   114 #endif /* TRUE_MACINTOSH_CURSOR */
   115 /* vi: set ts=4 sw=4 expandtab: */