Ticket #5978: app_server-wim-2.patch

File app_server-wim-2.patch, 17.6 KB (added by Wim, 9 years ago)

Add AS_GET_CURSOR_BITMAP command to the app_server, including a corresponding function in InterfaceDefs. I also cleaned up the ServerApp.cpp file a bit, mainly adding whitespace around case statements.

  • src/servers/app/ServerApp.cpp

     
    622622                fDesktop->BroadcastToAllApps(AS_UPDATE_DECORATOR);
    623623            break;
    624624        }
     625       
    625626        case AS_COUNT_DECORATORS:
    626627        {
    627628            fLink.StartMessage(B_OK);
     
    629630            fLink.Flush();
    630631            break;
    631632        }
     633       
    632634        case AS_GET_DECORATOR:
    633635        {
    634636            fLink.StartMessage(B_OK);
     
    636638            fLink.Flush();
    637639            break;
    638640        }
     641       
    639642        case AS_GET_DECORATOR_NAME:
    640643        {
    641644            int32 index;
     
    651654            fLink.Flush();
    652655            break;
    653656        }
     657       
    654658        case AS_R5_SET_DECORATOR:
    655659        {
    656660            // Sort of supports Tracker's nifty Easter Egg. It was easy to do
     
    671675
    672676            break;
    673677        }
     678       
    674679        case AS_CREATE_BITMAP:
    675680        {
    676681            STRACE(("ServerApp %s: Received BBitmap creation request\n",
     
    737742            fLink.Flush();
    738743            break;
    739744        }
     745       
    740746        case AS_DELETE_BITMAP:
    741747        {
    742748            STRACE(("ServerApp %s: received BBitmap delete request\n",
     
    760766            fMapLocker.Unlock();
    761767            break;
    762768        }
     769       
    763770        case AS_GET_BITMAP_OVERLAY_RESTRICTIONS:
    764771        {
    765772            overlay_restrictions restrictions;
     
    787794            fLink.Flush();
    788795            break;
    789796        }
     797       
    790798        case AS_GET_BITMAP_SUPPORT_FLAGS:
    791799        {
    792800            uint32 colorSpace;
     
    962970            fDesktop->HWInterface()->SetCursorVisible(fCursorHideLevel == 0);
    963971            break;
    964972        }
     973       
    965974        case AS_HIDE_CURSOR:
    966975        {
    967976            STRACE(("ServerApp %s: Hide Cursor\n", Signature()));
     
    969978            fDesktop->HWInterface()->SetCursorVisible(fCursorHideLevel == 0);
    970979            break;
    971980        }
     981       
    972982        case AS_OBSCURE_CURSOR:
    973983        {
    974984            STRACE(("ServerApp %s: Obscure Cursor\n", Signature()));
    975985            fDesktop->HWInterface()->ObscureCursor();
    976986            break;
    977987        }
     988       
    978989        case AS_QUERY_CURSOR_HIDDEN:
    979990        {
    980991            STRACE(("ServerApp %s: Received IsCursorHidden request\n",
     
    984995            fLink.Flush();
    985996            break;
    986997        }
     998       
    987999        case AS_SET_CURSOR:
    9881000        {
    9891001            STRACE(("ServerApp %s: SetCursor\n", Signature()));
     
    10231035            }
    10241036            break;
    10251037        }
     1038       
    10261039        case AS_SET_VIEW_CURSOR:
    10271040        {
    10281041            STRACE(("ServerApp %s: AS_SET_VIEW_CURSOR:\n", Signature()));
     
    10791092            }
    10801093            break;
    10811094        }
     1095       
    10821096        case AS_CREATE_CURSOR:
    10831097        {
    10841098            STRACE(("ServerApp %s: Create Cursor\n", Signature()));
     1099
    10851100            // Attached data:
    10861101            // 1) 68 bytes of fAppCursor data
    10871102            // 2) port_id reply port
     
    11241139            fLink.Flush();
    11251140            break;
    11261141        }
     1142       
    11271143        case AS_REFERENCE_CURSOR:
    11281144        {
    11291145            STRACE(("ServerApp %s: Reference BCursor\n", Signature()));
     1146
    11301147            // Attached data:
    11311148            // 1) int32 token ID of the cursor to reference
     1149
    11321150            int32 token;
    11331151            if (link.Read<int32>(&token) != B_OK)
    11341152                break;
     
    11451163
    11461164            break;
    11471165        }
     1166       
    11481167        case AS_DELETE_CURSOR:
    11491168        {
    11501169            STRACE(("ServerApp %s: Delete BCursor\n", Signature()));
     1170
    11511171            // Attached data:
    11521172            // 1) int32 token ID of the cursor to delete
     1173
    11531174            int32 token;
    11541175            if (link.Read<int32>(&token) != B_OK)
    11551176                break;
     
    11661187
    11671188            break;
    11681189        }
     1190       
    11691191        case AS_GET_CURSOR_POSITION:
    11701192        {
    11711193            STRACE(("ServerApp %s: Get Cursor position\n", Signature()));
     1194
    11721195            // Returns
    11731196            // 1) BPoint mouse location
    11741197            // 2) int32 button state
     1198
    11751199            BPoint where;
    11761200            int32 buttons;
    11771201            fDesktop->GetLastMouseState(&where, &buttons);
     
    11811205            fLink.Flush();
    11821206            break;
    11831207        }
     1208       
     1209        case AS_GET_CURSOR_BITMAP:
     1210        {
     1211            STRACE(("ServerApp %s: Get Cursor bitmap\n", Signature()));
     1212
     1213            // Returns
     1214            // 1) uint32 number of data bytes of the bitmap
     1215            // 2) uint32 cursor width in number of pixels
     1216            // 3) uint32 cursor height in number of pixels
     1217            // 4) BPoint cursor hot spot
     1218            // 5) cursor bitmap data
     1219           
     1220            ServerCursorReference cursorRef = fDesktop->Cursor();
     1221            ServerCursor* cursor = cursorRef.Get();
     1222            if (cursor != NULL) {
     1223                uint32 size = cursor->BitsLength();
     1224                fLink.StartMessage(B_OK);
     1225                fLink.Attach<uint32>(size);
     1226                fLink.Attach<uint32>(cursor->Width());
     1227                fLink.Attach<uint32>(cursor->Height());
     1228                fLink.Attach<BPoint>(cursor->GetHotSpot());
     1229                fLink.Attach(cursor->Bits(), size);
     1230            } else
     1231                fLink.StartMessage(B_ERROR);
     1232           
     1233            fLink.Flush();
     1234           
     1235            break;
     1236        }
     1237       
    11841238        case AS_GET_SCROLLBAR_INFO:
    11851239        {
    11861240            STRACE(("ServerApp %s: Get ScrollBar info\n", Signature()));
     
    11961250            } else
    11971251                fLink.StartMessage(B_ERROR);
    11981252
    1199                 fLink.Flush();
     1253            fLink.Flush();
    12001254            break;
    12011255        }
     1256       
    12021257        case AS_SET_SCROLLBAR_INFO:
    12031258        {
    12041259            STRACE(("ServerApp %s: Set ScrollBar info\n", Signature()));
     1260
    12051261            // Attached Data:
    12061262            // 1) scroll_bar_info scroll bar info structure
     1263
    12071264            scroll_bar_info info;
    12081265            if (link.Read<scroll_bar_info>(&info) == B_OK) {
    12091266                LockedDesktopSettings settings(fDesktop);
     
    12331290            fLink.Flush();
    12341291            break;
    12351292        }
     1293       
    12361294        case AS_SET_MENU_INFO:
    12371295        {
    12381296            STRACE(("ServerApp %s: Set menu info\n", Signature()));
     
    12531311        {
    12541312            STRACE(("ServerApp %s: Set Mouse Focus mode\n",
    12551313                Signature()));
     1314
    12561315            // Attached Data:
    12571316            // 1) enum mode_mouse mouse focus mode
     1317
    12581318            mode_mouse mouseMode;
    12591319            if (link.Read<mode_mouse>(&mouseMode) == B_OK) {
    12601320                LockedDesktopSettings settings(fDesktop);
     
    12621322            }
    12631323            break;
    12641324        }
     1325       
    12651326        case AS_GET_MOUSE_MODE:
    12661327        {
    12671328            STRACE(("ServerApp %s: Get Mouse Focus mode\n",
     
    12801341            fLink.Flush();
    12811342            break;
    12821343        }
     1344       
    12831345        case AS_SET_FOCUS_FOLLOWS_MOUSE_MODE:
    12841346        {
    12851347            STRACE(("ServerApp %s: Set Focus Follows Mouse mode\n", Signature()));
     1348
    12861349            // Attached Data:
    12871350            // 1) enum mode_focus_follows_mouse FFM mouse mode
     1351
    12881352            mode_focus_follows_mouse focusFollowsMousMode;
    12891353            if (link.Read<mode_focus_follows_mouse>(&focusFollowsMousMode) == B_OK) {
    12901354                LockedDesktopSettings settings(fDesktop);
     
    12921356            }
    12931357            break;
    12941358        }
     1359       
    12951360        case AS_GET_FOCUS_FOLLOWS_MOUSE_MODE:
    12961361        {
    12971362            STRACE(("ServerApp %s: Get Focus Follows Mouse mode\n", Signature()));
     
    13101375            fLink.Flush();
    13111376            break;
    13121377        }
     1378       
    13131379        case AS_SET_ACCEPT_FIRST_CLICK:
    13141380        {
    13151381            STRACE(("ServerApp %s: Set Accept First Click\n", Signature()));
     1382
    13161383            // Attached Data:
    13171384            // 1) bool accept_first_click
     1385
    13181386            bool acceptFirstClick;
    13191387            if (link.Read<bool>(&acceptFirstClick) == B_OK) {
    13201388                LockedDesktopSettings settings(fDesktop);
     
    13221390            }
    13231391            break;
    13241392        }
     1393       
    13251394        case AS_GET_ACCEPT_FIRST_CLICK:
    13261395        {
    13271396            STRACE(("ServerApp %s: Get Accept First Click\n", Signature()));
     
    14371506            }
    14381507            break;
    14391508        }
     1509       
    14401510        case AS_GET_SYSTEM_DEFAULT_FONT:
    14411511        {
    14421512            // input:
     
    14731543            fLink.Flush();
    14741544            break;
    14751545        }
     1546       
    14761547        case AS_GET_SYSTEM_FONTS:
    14771548        {
    14781549            FTRACE(("ServerApp %s: AS_GET_SYSTEM_FONTS\n", Signature()));
     
    15091580                        font = &fPlainFont;
    15101581                        fLink.AttachString("plain");
    15111582                        break;
     1583                       
    15121584                    case 1:
    15131585                        font = &fBoldFont;
    15141586                        fLink.AttachString("bold");
    15151587                        break;
     1588                       
    15161589                    case 2:
    15171590                        font = &fFixedFont;
    15181591                        fLink.AttachString("fixed");
     
    15301603            fLink.Flush();
    15311604            break;
    15321605        }
     1606       
    15331607        case AS_GET_FONT_LIST_REVISION:
    15341608        {
    15351609            STRACE(("ServerApp %s: AS_GET_FONT_LIST_REVISION\n", Signature()));
     
    15401614            fLink.Flush();
    15411615            break;
    15421616        }
     1617       
    15431618        case AS_GET_FAMILY_AND_STYLES:
    15441619        {
    15451620            FTRACE(("ServerApp %s: AS_GET_FAMILY_AND_STYLES\n", Signature()));
     1621
    15461622            // Attached Data:
    15471623            // 1) int32 the index of the font family to get
    15481624
     
    15831659            fLink.Flush();
    15841660            break;
    15851661        }
     1662       
    15861663        case AS_GET_FAMILY_AND_STYLE:
    15871664        {
    15881665            FTRACE(("ServerApp %s: AS_GET_FAMILY_AND_STYLE\n", Signature()));
     1666
    15891667            // Attached Data:
    15901668            // 1) uint16 - family ID
    15911669            // 2) uint16 - style ID
     
    15931671            // Returns:
    15941672            // 1) font_family The name of the font family
    15951673            // 2) font_style - name of the style
     1674
    15961675            uint16 familyID, styleID;
    15971676            link.Read<uint16>(&familyID);
    15981677            link.Read<uint16>(&styleID);
     
    16111690            gFontManager->Unlock();
    16121691            break;
    16131692        }
     1693       
    16141694        case AS_GET_FAMILY_AND_STYLE_IDS:
    16151695        {
    16161696            FTRACE(("ServerApp %s: AS_GET_FAMILY_AND_STYLE_IDS\n",
     
    16621742            fLink.Flush();
    16631743            break;
    16641744        }
     1745       
    16651746        case AS_GET_FONT_FILE_FORMAT:
    16661747        {
    16671748            FTRACE(("ServerApp %s: AS_GET_FONT_FILE_FORMAT\n", Signature()));
     1749
    16681750            // Attached Data:
    16691751            // 1) uint16 - family ID
    16701752            // 2) uint16 - style ID
     
    16891771            fLink.Flush();
    16901772            break;
    16911773        }
     1774       
    16921775        case AS_GET_STRING_WIDTHS:
    16931776        {
    16941777            FTRACE(("ServerApp %s: AS_GET_STRING_WIDTHS\n", Signature()));
     1778
    16951779            // Attached Data:
    16961780            // 1) uint16 ID of family
    16971781            // 2) uint16 ID of style
     
    17561840            }
    17571841            break;
    17581842        }
     1843       
    17591844        case AS_GET_FONT_BOUNDING_BOX:
    17601845        {
    17611846            FTRACE(("ServerApp %s: AS_GET_BOUNDING_BOX unimplemented\n",
    17621847                Signature()));
     1848
    17631849            // Attached Data:
    17641850            // 1) uint16 - family ID
    17651851            // 2) uint16 - style ID
     
    17721858            fLink.Flush();
    17731859            break;
    17741860        }
     1861       
    17751862        case AS_GET_TUNED_COUNT:
    17761863        {
    17771864            FTRACE(("ServerApp %s: AS_GET_TUNED_COUNT\n", Signature()));
     1865
    17781866            // Attached Data:
    17791867            // 1) uint16 - family ID
    17801868            // 2) uint16 - style ID
    17811869
    17821870            // Returns:
    17831871            // 1) int32 - number of font strikes available
     1872
    17841873            uint16 familyID, styleID;
    17851874            link.Read<uint16>(&familyID);
    17861875            link.Read<uint16>(&styleID);
     
    17981887            fLink.Flush();
    17991888            break;
    18001889        }
     1890       
    18011891        case AS_GET_TUNED_INFO:
    18021892        {
    18031893            FTRACE(("ServerApp %s: AS_GET_TUNED_INFO unimplmemented\n",
    18041894                Signature()));
     1895
    18051896            // Attached Data:
    18061897            // 1) uint16 - family ID
    18071898            // 2) uint16 - style ID
     
    18101901            // Returns:
    18111902            // 1) tuned_font_info - info on the strike specified
    18121903            // ToDo: implement me!
     1904
    18131905            fLink.StartMessage(B_ERROR);
    18141906            fLink.Flush();
    18151907            break;
    18161908        }
     1909       
    18171910        case AS_GET_EXTRA_FONT_FLAGS:
    18181911        {
    18191912            FTRACE(("ServerApp %s: AS_GET_EXTRA_FONT_FLAGS\n",
    18201913                Signature()));
     1914
    18211915            // Attached Data:
    18221916            // 1) uint16 - family ID
    18231917            // 2) uint16 - style ID
    18241918
    18251919            // Returns:
    18261920            // 1) uint32 - extra font flags
     1921
    18271922            uint16 familyID, styleID;
    18281923            link.Read<uint16>(&familyID);
    18291924            link.Read<uint16>(&styleID);
     
    18411936            fLink.Flush();
    18421937            break;
    18431938        }
     1939       
    18441940        case AS_GET_FONT_HEIGHT:
    18451941        {
    18461942            FTRACE(("ServerApp %s: AS_GET_FONT_HEIGHT\n", Signature()));
     1943
    18471944            // Attached Data:
    18481945            // 1) uint16 family ID
    18491946            // 2) uint16 style ID
    18501947            // 3) float size
     1948
    18511949            uint16 familyID, styleID;
    18521950            float size;
    18531951            link.Read<uint16>(&familyID);
     
    18701968            fLink.Flush();
    18711969            break;
    18721970        }
     1971       
    18731972        case AS_GET_GLYPH_SHAPES:
    18741973        {
    18751974            FTRACE(("ServerApp %s: AS_GET_GLYPH_SHAPES\n", Signature()));
     1975
    18761976            // Attached Data:
    18771977            // 1) uint16 - family ID
    18781978            // 2) uint16 - style ID
     
    19382038            fLink.Flush();
    19392039            break;
    19402040        }
     2041       
    19412042        case AS_GET_HAS_GLYPHS:
    19422043        {
    19432044            FTRACE(("ServerApp %s: AS_GET_HAS_GLYPHS\n", Signature()));
     2045
    19442046            // Attached Data:
    19452047            // 1) uint16 - family ID
    19462048            // 2) uint16 - style ID
     
    19762078            fLink.Flush();
    19772079            break;
    19782080        }
     2081       
    19792082        case AS_GET_EDGES:
    19802083        {
    19812084            FTRACE(("ServerApp %s: AS_GET_EDGES\n", Signature()));
     2085
    19822086            // Attached Data:
    19832087            // 1) uint16 - family ID
    19842088            // 2) uint16 - style ID
     
    20162120            fLink.Flush();
    20172121            break;
    20182122        }
     2123       
    20192124        case AS_GET_ESCAPEMENTS:
    20202125        {
    20212126            FTRACE(("ServerApp %s: AS_GET_ESCAPEMENTS\n", Signature()));
     2127
    20222128            // Attached Data:
    20232129            // 1) uint16 - family ID
    20242130            // 2) uint16 - style ID
     
    21102216            fLink.Flush();
    21112217            break;
    21122218        }
     2219       
    21132220        case AS_GET_ESCAPEMENTS_AS_FLOATS:
    21142221        {
    21152222            FTRACE(("ServerApp %s: AS_GET_ESCAPEMENTS_AS_FLOATS\n", Signature()));
     2223
    21162224            // Attached Data:
    21172225            // 1) uint16 - family ID
    21182226            // 2) uint16 - style ID
     
    21202228            // 4) uint8 - spacing
    21212229            // 5) float - rotation
    21222230            // 6) uint32 - flags
    2123 
    21242231            // 7) float - additional "nonspace" delta
    21252232            // 8) float - additional "space" delta
    2126 
    21272233            // 9) int32 - numChars
    21282234            // 10) int32 - numBytes
    21292235            // 11) char - the char buffer with size numBytes
     
    21932299            fLink.Flush();
    21942300            break;
    21952301        }
     2302       
    21962303        case AS_GET_BOUNDINGBOXES_CHARS:
    21972304        case AS_GET_BOUNDINGBOXES_STRING:
    21982305        {
    21992306            FTRACE(("ServerApp %s: AS_GET_BOUNDINGBOXES_CHARS\n", Signature()));
     2307
    22002308            // Attached Data:
    22012309            // 1) uint16 - family ID
    22022310            // 2) uint16 - style ID
     
    22062314            // 6) float - false bold width
    22072315            // 7) uint8 - spacing
    22082316            // 8) uint32 - flags
    2209 
    22102317            // 9) font_metric_mode - mode
    22112318            // 10) bool - string escapement
    2212 
    22132319            // 11) escapement_delta - additional delta
    2214 
    22152320            // 12) int32 - numChars
    22162321            // 13) int32 - numBytes
    22172322            // 14) char - the char buffer with size numBytes
     
    22842389            delete[] rectArray;
    22852390            break;
    22862391        }
     2392       
    22872393        case AS_GET_BOUNDINGBOXES_STRINGS:
    22882394        {
    22892395            FTRACE(("ServerApp %s: AS_GET_BOUNDINGBOXES_STRINGS\n",
     
    22982404            // 6) float - false bold width
    22992405            // 7) uint8 - spacing
    23002406            // 8) uint32 - flags
    2301 
    23022407            // 9) font_metric_mode - mode
    23032408            // 10) int32 numStrings
    2304 
    23052409            // 11) escapement_delta - additional delta (numStrings times)
    23062410            // 12) int32 string length to measure (numStrings times)
    23072411            // 13) string - string (numStrings times)
     
    23762480        {
    23772481            // Attached data
    23782482            // 1) int32 screen
     2483
    23792484            int32 id;
    23802485            if (link.Read<int32>(&id) == B_OK
    23812486                && id == B_MAIN_SCREEN_ID.id)
     
    23912496        {
    23922497            // Attached data
    23932498            // 1) int32 screen
     2499
    23942500            int32 id;
    23952501            link.Read<int32>(&id);
    23962502
     
    24062512
    24072513            // Attached data
    24082514            // 1) int32 - window client token
     2515
    24092516            int32 clientToken;
    24102517            if (link.Read<int32>(&clientToken) != B_OK)
    24112518                status = B_BAD_DATA;
     
    24472554        case AS_SCREEN_GET_MODE:
    24482555        {
    24492556            STRACE(("ServerApp %s: AS_SCREEN_GET_MODE\n", Signature()));
     2557
    24502558            // Attached data
    24512559            // 1) int32 screen
    24522560            // 2) uint32 workspace index
     
    24652573            fLink.Flush();
    24662574            break;
    24672575        }
     2576       
    24682577        case AS_SCREEN_SET_MODE:
    24692578        {
    24702579            STRACE(("ServerApp %s: AS_SCREEN_SET_MODE\n", Signature()));
     2580
    24712581            // Attached data
    24722582            // 1) int32 screen
    24732583            // 2) workspace index
     
    25612671        case AS_GET_SCREEN_FRAME:
    25622672        {
    25632673            STRACE(("ServerApp %s: AS_GET_SCREEN_FRAME\n", Signature()));
     2674
    25642675            // Attached data
    25652676            // 1) int32 screen
    25662677            // 2) uint32 workspace index
     
    26522763        case AS_SET_UI_COLOR:
    26532764        {
    26542765            STRACE(("ServerApp %s: Set UI Color\n", Signature()));
     2766
    26552767            // Attached Data:
    26562768            // 1) color_which which
    26572769            // 2) rgb_color color
     2770
    26582771            color_which which;
    26592772            rgb_color color;
    26602773
     
    27472860        case AS_GET_TIMING_CONSTRAINTS:
    27482861        {
    27492862            STRACE(("ServerApp %s: get timing constraints\n", Signature()));
     2863
    27502864            // We aren't using the screen_id for now...
    27512865            int32 id;
    27522866            link.Read<int32>(&id);
  • src/servers/app/ProfileMessageSupport.cpp

     
    6363        CODE(AS_END_RECT_TRACKING);
    6464       
    6565        CODE(AS_GET_CURSOR_POSITION);
     66        CODE(AS_GET_CURSOR_BITMAP);
    6667
    6768        // Window definitions
    6869        CODE(AS_SHOW_WINDOW);
  • src/kits/interface/InterfaceDefs.cpp

     
    1616
    1717#include <InterfaceDefs.h>
    1818
     19#include <new>
    1920#include <stdio.h>
    2021#include <stdlib.h>
    2122#include <string.h>
    2223
     24#include <Bitmap.h>
    2325#include <Clipboard.h>
    2426#include <ControlLook.h>
    2527#include <Font.h>
     
    963965}
    964966
    965967
     968status_t
     969get_mouse_bitmap(BBitmap** bitmap, BPoint* hotspot)
     970{
     971    if (bitmap == NULL && hotspot == NULL)
     972        return B_BAD_VALUE;
     973   
     974    BPrivate::AppServerLink link;
     975    link.StartMessage(AS_GET_CURSOR_BITMAP);
     976   
     977    int32 code;
     978    status_t status = link.FlushWithReply(code);
     979    if (status != B_OK)
     980        return status;
     981    if (code != B_OK)
     982        return code;
     983   
     984    uint32 size = 0;
     985    uint32 cursorWidth = 0;
     986    uint32 cursorHeight = 0;
     987   
     988    // if link.Read() returns an error, the same error will be returned on
     989    // subsequent calls, so we'll check only the return value of the last call
     990    link.Read<uint32>(&size);
     991    link.Read<uint32>(&cursorWidth);
     992    link.Read<uint32>(&cursorHeight);
     993    if (hotspot == NULL) {
     994        BPoint dummy;
     995        link.Read<BPoint>(&dummy);
     996    } else
     997        link.Read<BPoint>(hotspot);
     998
     999    void* data = NULL;
     1000    if (size > 0)
     1001        data = malloc(size);
     1002    if (data == NULL)
     1003        return B_NO_MEMORY;
     1004   
     1005    status = link.Read(data, size);
     1006    if (status != B_OK) {
     1007        free(data);
     1008        return status;
     1009    }
     1010   
     1011    BBitmap* cursorBitmap = new (std::nothrow) BBitmap(BRect(0, 0,
     1012        cursorWidth - 1, cursorHeight - 1), B_RGBA32);
     1013   
     1014    if (cursorBitmap == NULL) {
     1015        free(data);
     1016        return B_NO_MEMORY;
     1017    }
     1018    status = cursorBitmap->InitCheck();
     1019    if (status == B_OK)
     1020        cursorBitmap->SetBits(data, size, 0, B_RGBA32);
     1021
     1022    free(data);
     1023   
     1024    if (status == B_OK && bitmap != NULL)
     1025        *bitmap = cursorBitmap;
     1026    else
     1027        delete cursorBitmap;
     1028   
     1029    return status;
     1030}
     1031
     1032
    9661033void
    9671034set_accept_first_click(bool acceptFirstClick)
    9681035{
  • headers/os/interface/InterfaceDefs.h

     
    99#include <GraphicsDefs.h>
    1010#include <OS.h>
    1111
     12
     13class BBitmap;
     14class BPoint;
    1215class BRect;
    13 class BPoint;
    1416
    1517
    1618// some handy UTF-8 characters
     
    382384mode_focus_follows_mouse    focus_follows_mouse_mode();
    383385
    384386status_t        get_mouse(BPoint* screenWhere, uint32* buttons);
     387status_t        get_mouse_bitmap(BBitmap** bitmap, BPoint* hotspot);
    385388
    386389void            set_accept_first_click(bool acceptFirstClick);
    387390bool            accept_first_click();
  • headers/private/app/ServerProtocol.h

     
    8383    AS_END_RECT_TRACKING,
    8484   
    8585    AS_GET_CURSOR_POSITION,
     86    AS_GET_CURSOR_BITMAP,
    8687
    8788    // Window definitions
    8889    AS_SHOW_WINDOW,