added command line option to drop file into program window
[rocksndiamonds.git] / src / libgame / system.c
index f824ac511c0dd5d81318e8b643846d318de77650..e77e6fe67bfede76ebdcf56b619f281172bea158 100644 (file)
@@ -624,7 +624,7 @@ Bitmap *CreateBitmap(int width, int height, int depth)
   int real_height = MAX(1, height);    // prevent zero bitmap height
   int real_depth  = GetRealDepth(depth);
 
-  SDLCreateBitmapContent(new_bitmap, real_width, real_height, real_depth);
+  new_bitmap->surface = SDLCreateNativeSurface(real_width, real_height, real_depth);
 
   new_bitmap->width  = real_width;
   new_bitmap->height = real_height;
@@ -938,6 +938,12 @@ void BlitBitmapMasked(Bitmap *src_bitmap, Bitmap *dst_bitmap,
                      int src_x, int src_y, int width, int height,
                      int dst_x, int dst_y)
 {
+  if (program.headless)
+    return;
+
+  if (src_bitmap == NULL || dst_bitmap == NULL)
+    return;
+
   if (DrawingDeactivated(dst_x, dst_y))
     return;
 
@@ -1662,6 +1668,8 @@ void OpenAudio(void)
   audio.device_name = NULL;
   audio.device_fd = -1;
 
+  audio.sample_rate = DEFAULT_AUDIO_SAMPLE_RATE;
+
   audio.num_channels = 0;
   audio.music_channel = 0;
   audio.first_sound_channel = 0;
@@ -1835,6 +1843,28 @@ void PushUserEvent(int code, int value1, int value2)
   SDL_PushEvent((SDL_Event *)&event);
 }
 
+void PushDropEvent(char *file)
+{
+  SDL_DropEvent event;
+
+  SDL_memset(&event, 0, sizeof(event));
+
+  event.type = SDL_DROPBEGIN;
+  event.file = NULL;
+
+  SDL_PushEvent((SDL_Event *)&event);
+
+  event.type = SDL_DROPFILE;
+  event.file = getStringCopy(file);
+
+  SDL_PushEvent((SDL_Event *)&event);
+
+  event.type = SDL_DROPCOMPLETE;
+  event.file = NULL;
+
+  SDL_PushEvent((SDL_Event *)&event);
+}
+
 boolean PendingEscapeKeyEvent(void)
 {
   if (PendingEvent())