My application does not want Qt or wd in the mix at all. I want a pure J
atop SDL2 implementation. I am striving for a pure J application that
starts from J. I know I could write a C start and then use JDo from the
library etc but this feels like defeat on some level as I am still learning
J and want to see where it can go in the nooks and crannies.

I have already experimented with initialise wd and then setting 'wd timer
10` and a callback. This works but. Not what I want. I don't want all that
baggage at runtime.

SDL has a thread creation routine but I have failed to find any
documentation on 'cdcb'; the callback. I am not sure how to that but this
morning I plan to try! The callback for SDL_Thread is int(void*) so,
assuming the calling convention setup is accurate, if I...

testcallback =: monad define
NB. do something thread safe!
0
)

then

sdl_createthread cdcb testcallback

It can either do what I expect or go bang.


the worst that can happen is a reboot, giving me a coffee making
opportunity.
:)



On Sun, 29 Nov 2020 at 01:52, Thomas McGuire <tmcguir...@gmail.com> wrote:

> Have you come up with a way to handle SDL events?
>
> I was able to read events but if I set up a polling loop I ran into
> problems with J not getting time for handling
> Its own user events. I made some attempts to use wd ‘msgs’ from the window
> driver but was unsuccessful.
>
> Tom McGuire
>
> > On Nov 27, 2020, at 1:36 PM, emacstheviking <obji...@gmail.com> wrote:
> >
> > that took a few seconds to sink in but..yes, I see now.
> >
> > On Fri, 27 Nov 2020 at 16:46, bill lam <bbill....@gmail.com> wrote:
> >
> >> Well done!
> >>
> >> Sometimes I found it easier to read if negative index are used,
> >>
> >> 'rw rh' =. _2 _1 dmva sdl_getrenderoutputsize appr;(_1);(_1)
> >>
> >> On Sat, Nov 28, 2020, 12:19 AM emacstheviking <obji...@gmail.com>
> wrote:
> >>
> >>> Final more J-like solution to my problem, thanks bill Iam for the
> >> nudge...
> >>>
> >>> dmva =: 4 : '''''&$ each (x{y)'
> >>>
> >>> This allows me to specify the actual array positions I want de-arrayed
> /
> >>> scalerised and feels much more natural in use as I can now specify any
> >>> number of positions and of course re-order things too. Probably the
> only
> >>> improvement now is the name!
> >>>
> >>> 'rw rh' =. 2 3 dmva sdl_getrenderoutputsize appr;(_1);(_1)
> >>>
> >>> I appreciate that ''$ is only producing scales because the first atom
> of
> >> my
> >>> array contains a scalar. I think. !
> >>> Thanks all once again,
> >>> Sean.
> >>>
> >>>
> >>> On Fri, 27 Nov 2020 at 13:05, bill lam <bbill....@gmail.com> wrote:
> >>>
> >>>> probably your width and height are not scalar but singleton array. you
> >>> can
> >>>> check them with monad $ .
> >>>>
> >>>> On Fri, Nov 27, 2020, 8:00 PM emacstheviking <obji...@gmail.com>
> >> wrote:
> >>>>
> >>>>> Given these working external function declarations:
> >>>>>
> >>>>> SDL_GetWindowSize n x *i *i
> >>>>> SDL_GetRendererOutputSize n x *i *i
> >>>>> SDL_CreateRGBSurface > x i i i i i i i i
> >>>>>
> >>>>> then these two calls:
> >>>>>
> >>>>> 'ww wh'=:2}.sdl_getwindowsize appw;(,_1);(,_1)
> >>>>> 'rw rh'=:2}.sdl_getrendereroutputsize appr;(,_1);(,_1)
> >>>>>
> >>>>> work and produce values of 1024 for ww and rw, and 768 for wh and rh
> >>>>> respectively, as expected.
> >>>>> However, when creating the rgb surface it raises a domain error and I
> >>>> have
> >>>>> been tearing my hair out to understand why.
> >>>>> I have posted the full code at the end of this plea for help and
> >>>>> enlightenment.
> >>>>>
> >>>>> args=.0;width;height;32;16bff0000;16bff00;16bff;16bff000000
> >>>>> smoutput args
> >>>>> sfc=: sdl_creatergbsurface args
> >>>>>
> >>>>> cder''
> >>>>> 6 1
> >>>>>
> >>>>> yet calling it with literals or even the extracted 'y' value (a boxed
> >>>>> dimension):
> >>>>> args=.0;1024;768;32;16bff0000;16bff00;16bff;16bff000000. NB. works
> >>>>> args=.0;width;height;32;16bff0000;16bff00;16bff;16bff000000. NB.
> >> works
> >>>>>
> >>>>> I have used 3!:0 to examine the type, it is 4 (integer) in all cases
> >>>>> (ww,wh,rw,rh,width,height), ruling out those errors.
> >>>>> Thanks,
> >>>>> Sean. :|
> >>>>>
> >>>>> -- full code ---
> >>>>>
> >>>>> ugo =: 3 : 0
> >>>>> NB. testing out domain errors around sdl_creatergbsurface...
> >>>>> args =. SCREEN_X_MAX;SCREEN_Y_MAX
> >>>>> scrw =. SCREEN_X_MAX
> >>>>> scrh =. SCREEN_Y_MAX
> >>>>> sdlprep scrw;scrh
> >>>>> cairoprep''
> >>>>> urun''
> >>>>> uend^:y ''
> >>>>> )
> >>>>>
> >>>>> sdlprep =: 3 : 0
> >>>>> 'width height'=. y
> >>>>> sdl_init SDL_INIT_EVERYTHING
> >>>>> appw=:sdl_createwindow 'test window';0;0
> >>>>> ;width;height;SDL_WINDOW_SHOWN+SDL_WINDOW_ALLOW_HIGHDPI
> >>>>> appr=:sdl_createrenderer appw;_1
> >>>>> ;SDL_RENDERER_ACCELERATED+SDL_RENDERER_PRESENTVSYNC
> >>>>> 'ww wh'=:2}.sdl_getwindowsize appw;(,_1);(,_1)
> >>>>> 'rw rh'=:2}.sdl_getrendereroutputsize appr;(,_1);(,_1)
> >>>>> cxm=: rw % ww
> >>>>> cym=: rh % wh
> >>>>> smoutput 'window: ', (":appw), 'renderer:', (":appr)
> >>>>> smoutput 'requested width:',(":width),' height:',(":height)
> >>>>> smoutput 'render width: ',(":rw),' height:',(":rh)
> >>>>> smoutput 'window width: ',(":ww),' height:',(":wh)
> >>>>> smoutput 'x/y multipliers:',(":cxm),'/',(":cym)
> >>>>> NB. This needs to be endian-aware at some point
> >>>>> smoutput (": (width = rw))
> >>>>> args=.0;width;height;32;16bff0000;16bff00;16bff;16bff000000
> >>>>> smoutput args
> >>>>> sfc=: sdl_creatergbsurface args
> >>>>> NB. Practice structures. PACKING!!! Show printable format name
> >>>>> pFormat=._3 ic memr (sfc+8),0,8 NB. sdl_surface->format
> >>>>> format=._2 ic memr pFormat,0,4 NB. sdl_surface->format->format
> >>>>> smoutput 'pixel format:',(psz sdl_getpixelformatname format)
> >>>>> EMPTY
> >>>>> )
> >>>>>
> >> ----------------------------------------------------------------------
> >>>>> For information about J forums see
> >> http://www.jsoftware.com/forums.htm
> >>>>>
> >>>> ----------------------------------------------------------------------
> >>>> For information about J forums see
> http://www.jsoftware.com/forums.htm
> >>>>
> >>> ----------------------------------------------------------------------
> >>> For information about J forums see http://www.jsoftware.com/forums.htm
> >>>
> >> ----------------------------------------------------------------------
> >> For information about J forums see http://www.jsoftware.com/forums.htm
> >>
> > ----------------------------------------------------------------------
> > For information about J forums see http://www.jsoftware.com/forums.htm
>
> ----------------------------------------------------------------------
> For information about J forums see http://www.jsoftware.com/forums.htm
>
----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm

Reply via email to