Skip to content

Commit 4a762bd

Browse files
committed
Only go into image drag-n-drop mode if we aren't showing files from the command line
1 parent b56698c commit 4a762bd

File tree

1 file changed

+51
-48
lines changed

1 file changed

+51
-48
lines changed

examples/showimage.c

+51-48
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,7 @@ int main(int argc, char *argv[])
6363
SDL_Event event;
6464
const char *tonemap = NULL;
6565
const char *saveFile = NULL;
66+
int attempted = 0;
6667
int result = 0;
6768

6869
(void)argc;
@@ -137,6 +138,7 @@ int main(int argc, char *argv[])
137138
}
138139

139140
/* Open the image file */
141+
++attempted;
140142
if (tonemap) {
141143
SDL_Surface *surface, *temp;
142144

@@ -255,63 +257,64 @@ int main(int argc, char *argv[])
255257
texture = NULL;
256258
}
257259

258-
/* Show the window if needed */
259-
SDL_SetWindowTitle(window, "showimage");
260-
w = 640.0f;
261-
h = 480.0f;
262-
SDL_SetWindowSize(window, (int)w, (int)h);
263-
SDL_ShowWindow(window);
264-
265-
done = quit;
266-
while ( !done ) {
267-
while ( SDL_PollEvent(&event) ) {
268-
switch (event.type) {
269-
case SDL_EVENT_DROP_FILE:
270-
{
271-
const char *file = event.drop.data;
272-
273-
SDL_DestroyTexture(texture);
274-
275-
SDL_Log("Loading %s\n", file);
276-
texture = IMG_LoadTexture(renderer, file);
277-
if (!texture) {
278-
SDL_Log("Couldn't load %s: %s\n", file, SDL_GetError());
260+
if (attempted == 0 && !quit) {
261+
/* Show the window if needed */
262+
SDL_SetWindowTitle(window, "showimage");
263+
w = 640.0f;
264+
h = 480.0f;
265+
SDL_SetWindowSize(window, (int)w, (int)h);
266+
SDL_ShowWindow(window);
267+
268+
while ( !done ) {
269+
while ( SDL_PollEvent(&event) ) {
270+
switch (event.type) {
271+
case SDL_EVENT_DROP_FILE:
272+
{
273+
const char *file = event.drop.data;
274+
275+
SDL_DestroyTexture(texture);
276+
277+
SDL_Log("Loading %s\n", file);
278+
texture = IMG_LoadTexture(renderer, file);
279+
if (!texture) {
280+
SDL_Log("Couldn't load %s: %s\n", file, SDL_GetError());
281+
break;
282+
}
283+
SDL_SetWindowTitle(window, file);
284+
SDL_GetTextureSize(texture, &w, &h);
285+
SDL_SetWindowSize(window, (int)w, (int)h);
286+
}
287+
break;
288+
case SDL_EVENT_KEY_UP:
289+
switch (event.key.key) {
290+
case SDLK_ESCAPE:
291+
case SDLK_Q:
292+
done = 1;
279293
break;
280294
}
281-
SDL_SetWindowTitle(window, file);
282-
SDL_GetTextureSize(texture, &w, &h);
283-
SDL_SetWindowSize(window, (int)w, (int)h);
284-
}
285-
break;
286-
case SDL_EVENT_KEY_UP:
287-
switch (event.key.key) {
288-
case SDLK_ESCAPE:
289-
case SDLK_Q:
295+
break;
296+
case SDL_EVENT_MOUSE_BUTTON_DOWN:
297+
done = 1;
298+
break;
299+
case SDL_EVENT_QUIT:
290300
done = 1;
291301
break;
292-
}
293-
break;
294-
case SDL_EVENT_MOUSE_BUTTON_DOWN:
295-
done = 1;
296-
break;
297-
case SDL_EVENT_QUIT:
298-
done = 1;
299-
break;
300-
default:
301-
break;
302+
default:
303+
break;
304+
}
302305
}
303-
}
304306

305-
/* Draw a background pattern in case the image has transparency */
306-
draw_background(renderer, (int)w, (int)h);
307+
/* Draw a background pattern in case the image has transparency */
308+
draw_background(renderer, (int)w, (int)h);
307309

308-
/* Display the image */
309-
SDL_RenderTexture(renderer, texture, NULL, NULL);
310-
SDL_RenderPresent(renderer);
310+
/* Display the image */
311+
SDL_RenderTexture(renderer, texture, NULL, NULL);
312+
SDL_RenderPresent(renderer);
311313

312-
SDL_Delay(100);
314+
SDL_Delay(100);
315+
}
316+
SDL_DestroyTexture(texture);
313317
}
314-
SDL_DestroyTexture(texture);
315318

316319
/* We're done! */
317320
done:

0 commit comments

Comments
 (0)