1. 19 Sep, 2022 1 commit
  2. 18 Sep, 2022 1 commit
  3. 17 Sep, 2022 6 commits
  4. 16 Sep, 2022 18 commits
  5. 15 Sep, 2022 9 commits
  6. 14 Sep, 2022 4 commits
    • SDL Wiki Bot's avatar
      Sync SDL wiki -> header · c49faabb
      SDL Wiki Bot authored
      c49faabb
    • DS's avatar
      Add support for X11 primary selection (#6132) · ac5b9bc4
      DS authored
      X11 has a so-called primary selection, which you can use by marking text and middle-clicking elsewhere to copy the marked text.
      
      There are 3 new API functions in `SDL_clipboard.h`, which work exactly like their clipboard equivalents.
      
      ## Test Instructions
      
      * Run the tests (just a copy of the clipboard tests): `$ ./test/testautomation --filter Clipboard`
      * Build and run this small application:
      <details>
      ```C
      #include <SDL.h>
      #include <unistd.h>
      #include <stdbool.h>
      #include <stdio.h>
      #include <stdlib.h>
      #include <time.h>
      
      void print_error(const char *where)
      {
      	const char *errstr = SDL_GetError();
      	if (errstr == NULL || errstr[0] == '\0')
      		return;
      	fprintf(stderr, "SDL Error after '%s': %s\n", where, errstr);
      	SDL_ClearError();
      }
      
      int main()
      {
      	char text_buf[256];
      
      	srand(time(NULL));
      
      	SDL_Init(SDL_INIT_VIDEO);
      	print_error("SDL_INIT()");
      	SDL_Window *window = SDL_CreateWindow("Primary Selection Test", SDL_WINDOWPOS_UNDEFINED,
      			SDL_WINDOWPOS_UNDEFINED, 400, 400, SDL_WINDOW_SHOWN);
      	print_error("SDL_CreateWindow()");
      	SDL_Renderer *renderer = SDL_CreateRenderer(window, -1, SDL_RENDERER_ACCELERATED);
      	print_error("SDL_CreateRenderer()");
      
      	bool quit = false;
      	unsigned int do_render = 0;
      	while (!quit) {
      		SDL_Event event;
      		while (SDL_PollEvent(&event)) {
      			print_error("SDL_PollEvent()");
      			switch (event.type) {
      			case SDL_QUIT: {
      				quit = true;
      				break;
      			} case SDL_KEYDOWN: {
      				switch (event.key.keysym.sym) {
      				case SDLK_ESCAPE:
      				case SDLK_q:
      					quit = true;
      					break;
      				case SDLK_c:
      					snprintf(text_buf, sizeof(text_buf), "foo%d", rand());
      					SDL_SetClipboardText(text_buf);
      					print_error("SDL_SetClipboardText()");
      					printf("clipboard: set_to=\"%s\"\n", text_buf);
      					break;
      				case SDLK_v: {
      					printf("clipboard: has=%d, ", SDL_HasClipboardText());
      					print_error("SDL_HasClipboardText()");
      					char *text = SDL_GetClipboardText();
      					print_error("SDL_GetClipboardText()");
      					printf("text=\"%s\"\n", text);
      					SDL_free(text);
      					break;
      				} case SDLK_d:
      					snprintf(text_buf, sizeof(text_buf), "bar%d", rand());
      					SDL_SetPrimarySelectionText(text_buf);
      					print_error("SDL_SetPrimarySelectionText()");
      					printf("primselec: set_to=\"%s\"\n", text_buf);
      					break;
      				case SDLK_f: {
      					printf("primselec: has=%d, ", SDL_HasPrimarySelectionText());
      					print_error("SDL_HasPrimarySelectionText()");
      					char *text = SDL_GetPrimarySelectionText();
      					print_error("SDL_GetPrimarySelectionText()");
      					printf("text=\"%s\"\n", text);
      					SDL_free(text);
      					break;
      				} default:
      					break;
      				}
      				break;
      			} default: {
      				break;
      			}}
      		}
      		// create less noise with WAYLAND_DEBUG=1
      		if (do_render == 0) {
      			SDL_RenderPresent(renderer);
      			print_error("SDL_RenderPresent()");
      		}
      		do_render += 1;
      		usleep(12000);
      	}
      
      	SDL_DestroyRenderer(renderer);
      	SDL_DestroyWindow(window);
      	SDL_Quit();
      	print_error("quit");
      	return 0;
      }
      ```
      </details>
      
      * Use c,v,d,f to get and set the clipboard and primary selection.
      * Mark text and middle-click also in other applications.
      * For wayland under x:
        * `$ mutter --wayland --no-x11 --nested`
        * `$ XDG_SESSION_TYPE=wayland SDL_VIDEODRIVER=wayland ./<path_to_test_appl_binary>`
      ac5b9bc4
    • Sam Lantinga's avatar
    • Sam Lantinga's avatar
      Fixed OpenGLES shaders failing after renderer has been created · b5102a55
      Sam Lantinga authored
      Cache all the shaders up front, so we can verify that they won't silently fail at runtime.
      
      If compiling the fragment shaders with the precision hint fails, try again without specifying precision.
      
      Fixes https://github.com/libsdl-org/SDL/issues/6166
      Fixes https://github.com/libsdl-org/SDL/issues/6174
      b5102a55
  7. 13 Sep, 2022 1 commit
    • xeonmc's avatar
      Update SDL_windowswindow.c (#6225) · 228b9fb5
      xeonmc authored
      Clip rectangle set to int(left+width/2) , int(top+height/2) , int(left+width/2)+1 , int(top+height/2)+1
      a 1x1 box
      On even-valued resolution, cursor is stable at bottom-right central pixel
      On odd-valued resolution, cursor is stable at exact central pixel.
      this is the desired behaviour
      228b9fb5