diff --git a/scripts/javascript/examples/test_rand.js b/scripts/javascript/examples/test_rand.js index 088a7fcf..e82d7bd0 100644 --- a/scripts/javascript/examples/test_rand.js +++ b/scripts/javascript/examples/test_rand.js @@ -8,9 +8,9 @@ W = 400; H = 300; -scr = new Screen("sdl"); -scr.init(W,H); -add_screen(scr); +// scr = new Screen("sdl"); +// scr.init(W,H); +// add_screen(scr); function draw_pixels(rand_geo) { var x, y; @@ -84,7 +84,7 @@ rand_geo = new GeometryLayer(400,300); rand_geo.activate(true); //geo.start(); //geo.set_fps(24); -scr.add_layer(rand_geo); +add_layer(rand_geo); running = true; rand_kbd = new KeyboardController(); diff --git a/scripts/python/gtkgui/main.py b/scripts/python/gtkgui/main.py index d457652c..46d3df3e 100644 --- a/scripts/python/gtkgui/main.py +++ b/scripts/python/gtkgui/main.py @@ -120,8 +120,8 @@ class ContextMenu(gtk.Menu): class FreeJ(object): def __init__(self): -# self.scr = freej.SdlScreen() -# self.scr.init( 400 , 300 , 32 ) + self.scr = freej.SdlScreen() + self.scr.init( 400 , 300 , 32 ) self.init_context() def init_context(self): @@ -130,7 +130,7 @@ class FreeJ(object): self.cx.clear_all = True -# self.cx.add_screen( self.scr ) + self.cx.add_screen( self.scr ) if len(sys.argv) > 1: for lay in sys.argv[1:]: self.open_layer(lay) @@ -221,7 +221,7 @@ class App(FreeJ): FreeJ.__init__(self) # setup python execution context main engine pointers self.pyctx['Context'] = self.cx - self.pyctx['Screen'] = self.scr + self.pyctx['Screen'] = self.cx.screens.selected() # fill lists with engine contents self.fill_tree() self.fill_effects() @@ -268,11 +268,14 @@ class App(FreeJ): self.buffer.set_syntax_highlight(self.lang) def update_previews(self): + self.scr = self.cx.scr.selected() + if(not self.scr): + return self.scr.lock() self.scr.layers.lock() data = self.scr.get_surface_buffer() - w = self.scr.w - h = self.scr.h + w = self.scr.geo.w + h = self.scr.geo.h #data = self.invert_array(data) self.images = {} data_array = [] @@ -506,6 +509,7 @@ class App(FreeJ): self.main_tree.set_model(self.main_model) self.folder_icon = self.main_tree.render_icon(gtk.STOCK_DIRECTORY, gtk.ICON_SIZE_MENU) self.layer_icon = self.main_tree.render_icon(gtk.STOCK_FILE, gtk.ICON_SIZE_MENU) + self.screen_icon = self.main_tree.render_icon(gtk.STOCK_FILE, gtk.ICON_SIZE_MENU) self.effect_icon = self.main_tree.render_icon(gtk.STOCK_EXECUTE, gtk.ICON_SIZE_MENU) self.ctl_icon = self.main_tree.render_icon(gtk.STOCK_CONNECT, gtk.ICON_SIZE_MENU) cell = gtk.CellRendererText() @@ -521,10 +525,10 @@ class App(FreeJ): self.main_model.clear() tooltip = "tooltip" - screens = self.main_model.append(Nune, ["Screens", 0, MENU, + screens = self.main_model.append(None, ["Screens", 0, MENU, self.folder_icon, tooltip]) for c_idx, screen in enumerate(self.cx.screens): - c_iter = self.main_model.append(screens, [ screen.name, + c_iter = self.main_model.append(screens, [ "screen", c_idx, SCREEN, self.screen_icon, tooltip]) for l_idx, layer in enumerate(screen.layers): diff --git a/src/context.cpp b/src/context.cpp index c11be5ef..a4371fb4 100644 --- a/src/context.cpp +++ b/src/context.cpp @@ -347,6 +347,11 @@ bool Context::add_encoder(VideoEncoder *enc) { bool Context::add_layer(Layer *lay) { func("%u:%s:%s",__LINE__,__FILE__,__FUNCTION__); + warning("use of Context::add_layer is DEPRECATED"); + warning("please use ViewPort::add_layer instead"); + warning("a list of screens (view ports) is available"); + warning("kijk in Context::screens Linklist"); + ViewPort *scr = screens.selected(); if(!scr) { error("no screen initialized, can't add layer %s", lay->name); diff --git a/src/context_js.cpp b/src/context_js.cpp index 158b5a44..1a7fd2ea 100644 --- a/src/context_js.cpp +++ b/src/context_js.cpp @@ -43,6 +43,7 @@ JSFunctionSpec global_functions[] = { {"quit", quit, 0}, {"add_screen", add_screen, 1}, {"rem_screen", rem_screen, 1}, + {"add_layer", ctx_add_layer, 1}, // {"selected_layer", selected_screen, 0}, {"debug", debug, 1}, {"set_debug", js_set_debug, 0}, @@ -166,6 +167,28 @@ JS(add_screen) { return JS_TRUE; } +JS(ctx_add_layer) { + func("%s",__PRETTY_FUNCTION__); + + JSObject *jslayer = NULL; + Layer *lay; + + if(argc<1) JS_ERROR("missing argument"); + // js_is_instanceOf(&layer_class, argv[0]); + + jslayer = JSVAL_TO_OBJECT(argv[0]); + lay = (Layer*) JS_GetPrivate(cx, jslayer); + if(!lay) JS_ERROR("Layer is NULL"); + + if( global_environment->add_layer(lay) ) { + *rval=JSVAL_TRUE; + } else { + *rval=JSVAL_FALSE; + } + + return JS_TRUE; +} + JS(list_filters) { func("%u:%s:%s",__LINE__,__FILE__,__FUNCTION__); JSObject *arr; diff --git a/src/freej.cpp b/src/freej.cpp index 92fd2d53..2e8019e1 100644 --- a/src/freej.cpp +++ b/src/freej.cpp @@ -281,7 +281,7 @@ int main (int argc, char **argv) { cmdline(argc,argv); set_debug(debug_level); - /* + // create SDL screen by default at selected size screen = NULL; if(opengl) @@ -301,7 +301,7 @@ int main (int argc, char **argv) { freej->add_screen(screen); if(fullscreen) screen->fullscreen(); - */ + /* sets realtime priority to maximum allowed for SCHED_RR (POSIX.1b) this hangs on some linux kernels - darwin doesn't even bothers with it anybody knows what's wrong when you turn it on? ouch! it hurts :| diff --git a/src/include/jsparser_data.h b/src/include/jsparser_data.h index c5cab9cf..731792ba 100644 --- a/src/include/jsparser_data.h +++ b/src/include/jsparser_data.h @@ -244,6 +244,7 @@ JS(cafudda); JS(quit); JS(add_screen); JS(rem_screen); +JS(ctx_add_layer); JS(selected_screen); JS(debug); JS(js_set_debug);