Check-in [5f88f29a7f]
Not logged in

Many hyperlinks are disabled.
Use anonymous login to enable hyperlinks.

Overview
Comment:repair wayland scroll wheel and support for 3d canvas widget
Timelines: family | ancestors | descendants | both | trunk
Files: files | file ages | folders
SHA1: 5f88f29a7fb4be112035be841184b2fba34c0b17
User & Date: chw 2017-01-01 22:04:46.866
Context
2017-01-02
08:50
add tcl upstream changes check-in: 96ef6083f8 user: chw tags: trunk
2017-01-01
22:04
repair wayland scroll wheel and support for 3d canvas widget check-in: 5f88f29a7f user: chw tags: trunk
2016-12-31
14:27
support for experimental [undroidwish] build with Wayland video driver check-in: ede1c30713 user: chw tags: trunk
Changes
Unified Diff Ignore Whitespace Patch
Changes to jni/SDL2/src/video/wayland/SDL_waylandevents.c.
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
                x = wl_fixed_to_int(value);
                y = 0;
                break;
            default:
                return;
        }

        SDL_SendMouseWheel(window->sdlwindow, 0, x, y, SDL_MOUSEWHEEL_NORMAL);
    }
}

static void
pointer_handle_axis(void *data, struct wl_pointer *pointer,
                    uint32_t time, uint32_t axis, wl_fixed_t value)
{







|







244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
                x = wl_fixed_to_int(value);
                y = 0;
                break;
            default:
                return;
        }

        SDL_SendMouseWheel(window->sdlwindow, 0, x, -y, SDL_MOUSEWHEEL_NORMAL);
    }
}

static void
pointer_handle_axis(void *data, struct wl_pointer *pointer,
                    uint32_t time, uint32_t axis, wl_fixed_t value)
{
Changes to jni/sdl2tk/sdl/SdlTkX.c.
1
2
3
4
5

6
7
8
9
10
11
12
#ifdef linux
#define _BSD_SOURCE
#if defined(__arm__) || defined(__aarch64__) || defined(ANDROID)
#include <sys/eventfd.h>
#endif

#endif
#ifdef _WIN32
#include <windows.h>
#else
#include <errno.h>
#include <unistd.h>
#endif





>







1
2
3
4
5
6
7
8
9
10
11
12
13
#ifdef linux
#define _BSD_SOURCE
#if defined(__arm__) || defined(__aarch64__) || defined(ANDROID)
#include <sys/eventfd.h>
#endif
#include <dlfcn.h>
#endif
#ifdef _WIN32
#include <windows.h>
#else
#include <errno.h>
#include <unistd.h>
#endif
5638
5639
5640
5641
5642
5643
5644






5645
5646
5647
5648
5649
5650
5651
		SendMessage(hwnd, WM_SETICON, ICON_SMALL, (LPARAM) hicon);
		SendMessage(hwnd, WM_SETICON, ICON_BIG, (LPARAM) hicon);
	    }
	}
#else
	if (wminfo.subsystem != SDL_SYSWM_X11) {
	    SdlTkX.sdlfocus = 1;






	}
#endif
    } else {
	SdlTkX.sdlfocus = 1;
    }
#endif
    SdlTkSetCursor(None);







>
>
>
>
>
>







5639
5640
5641
5642
5643
5644
5645
5646
5647
5648
5649
5650
5651
5652
5653
5654
5655
5656
5657
5658
		SendMessage(hwnd, WM_SETICON, ICON_SMALL, (LPARAM) hicon);
		SendMessage(hwnd, WM_SETICON, ICON_BIG, (LPARAM) hicon);
	    }
	}
#else
	if (wminfo.subsystem != SDL_SYSWM_X11) {
	    SdlTkX.sdlfocus = 1;
#ifdef linux
	    /* Wayland? Try to load libGL.so for 3D canvas. */
	    if (!SdlTkX.arg_nogl) {
		dlopen("libGL.so.1", RTLD_NOW | RTLD_GLOBAL);
	    }
#endif
	}
#endif
    } else {
	SdlTkX.sdlfocus = 1;
    }
#endif
    SdlTkSetCursor(None);
7626
7627
7628
7629
7630
7631
7632







7633
7634
7635
7636
7637
7638
7639
	    /* wait for next screen refresh */
	    do {
		Tcl_ConditionWait(&time_cond, &xlib_lock, NULL);
	    } while (wait_refr && (SdlTkX.frame_count == frame_count));
#else
	    Uint32 fmt = SDL_GetWindowPixelFormat(_w->gl_wind);








	    if (SDL_RenderReadPixels(rend, NULL, fmt, surf->pixels,
				     surf->pitch) == 0) {
		_Pixmap p;

		p.type = DT_PIXMAP;
		p.sdl = surf;
		p.format = _w->format;







>
>
>
>
>
>
>







7633
7634
7635
7636
7637
7638
7639
7640
7641
7642
7643
7644
7645
7646
7647
7648
7649
7650
7651
7652
7653
	    /* wait for next screen refresh */
	    do {
		Tcl_ConditionWait(&time_cond, &xlib_lock, NULL);
	    } while (wait_refr && (SdlTkX.frame_count == frame_count));
#else
	    Uint32 fmt = SDL_GetWindowPixelFormat(_w->gl_wind);

	    if (fmt == SDL_PIXELFORMAT_UNKNOWN) {
		/*
		 * This can happen with the wayland video driver,
		 * thus try to go on with 24 bit RGB.
		 */
		fmt = SDL_PIXELFORMAT_RGB888;
	    }
	    if (SDL_RenderReadPixels(rend, NULL, fmt, surf->pixels,
				     surf->pitch) == 0) {
		_Pixmap p;

		p.type = DT_PIXMAP;
		p.sdl = surf;
		p.format = _w->format;