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
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

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
....
5638
5639
5640
5641
5642
5643
5644






5645
5646
5647
5648
5649
5650
5651
....
7626
7627
7628
7629
7630
7631
7632







7633
7634
7635
7636
7637
7638
7639
#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
................................................................................
		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);
................................................................................
	    /* 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;





>







 







>
>
>
>
>
>







 







>
>
>
>
>
>
>







1
2
3
4
5
6
7
8
9
10
11
12
13
....
5639
5640
5641
5642
5643
5644
5645
5646
5647
5648
5649
5650
5651
5652
5653
5654
5655
5656
5657
5658
....
7633
7634
7635
7636
7637
7638
7639
7640
7641
7642
7643
7644
7645
7646
7647
7648
7649
7650
7651
7652
7653
#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
................................................................................
		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);
................................................................................
	    /* 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;