Esempio n. 1
0
void Scroll_scroll(
	struct Tracker_Windows *window,
	int num_lines
){
//  int lokke;
	struct WBlocks *wblock=window->wblock;

#if !USE_OPENGL

	int top_realline=wblock->top_realline;
	int bot_realline=wblock->bot_realline;

	/*
	if(num_lines<0){
		Scroll_freePixMapLines(window,bot_realline+num_lines+1,bot_realline);
	}else{
		Scroll_freePixMapLines(window,top_realline,top_realline+num_lines-1);
	}

//	printf("scroll1:\n");
//  for(lokke=0;lokke<window->wblock->num_visiblelines;lokke++)
//    printf("vis: %d, val: %d\n",lokke,window->pixmapdefs[lokke]);

	*/

	//	Scroll_scrollPixMapDefs(window,num_lines);

	PixMap_scrollDefs(
		window,
		num_lines
	);
#endif

//	printf("scroll2:\n");
//  for(lokke=0;lokke<window->wblock->num_visiblelines;lokke++)
//    printf("vis: %d, val: %d\n",lokke,window->pixmapdefs[lokke]);

	wblock->top_realline+=num_lines;
	wblock->curr_realline+=num_lines;
	wblock->bot_realline+=num_lines;

        GE_set_curr_realline(wblock->curr_realline);

#if !USE_OPENGL
	if(num_lines<0){
		Scroll_makePixMapLines(window,top_realline+num_lines,top_realline-1);
	}else{
		Scroll_makePixMapLines(window,bot_realline+1,bot_realline+num_lines);
	}
#endif

//	printf("scroll3: n: %d\n",num_lines);
//  for(lokke=0;lokke<window->wblock->num_visiblelines;lokke++)
//    printf("vis: %d, val: %d\n",lokke,window->pixmapdefs[lokke]);

	/*
	Scroll_drawPixMaps(window,wblock->top_realline,wblock->bot_realline);
	*/
}
Esempio n. 2
0
// Simpler version when using opengl
void P2MUpdateSongPosCallBack(void){

  bool setfirstpos=ATOMIC_GET(root->setfirstpos);

  NInt curr_block_num = ATOMIC_GET(root->curr_blocknum);
  
  struct Tracker_Windows *window=root->song->tracker_windows;
  struct WBlocks *wblock = ListFindElement1(&window->wblocks->l,curr_block_num);

  int old_curr_realline = wblock->curr_realline;
  int till_curr_realline = R_BOUNDARIES(0, ATOMIC_GET(wblock->till_curr_realline), wblock->num_reallines-1); // till_curr_realline can be set from any thread, at any time, to any value.

  if (!ATOMIC_GET(root->play_cursor_onoff)){
    //printf("P2MUpdateSongPosCallBack: Setting to %d\n",till_curr_realline);
    wblock->curr_realline = till_curr_realline;
    wblock->top_realline += till_curr_realline - old_curr_realline;
    wblock->bot_realline += till_curr_realline - old_curr_realline;
  }
  
  if(pc->playtype==PLAYSONG)
    BS_SelectPlaylistPos(ATOMIC_GET2(root->curr_playlist));
  
  if(window->curr_block!=curr_block_num){
    //printf("Bef. w: %d, r: %d\n",window->curr_block,root->curr_block);
    if(setfirstpos){
      wblock->curr_realline=0;
      SetWBlock_Top_And_Bot_Realline(window,wblock);
      GE_set_curr_realline(0);
    }
    SelectWBlock(
                 window,
                 wblock
                 );
    //printf("Aft. w: %d, r: %d\n",window->curr_block,root->curr_block);
  }      


  // make sure "Rec" is updated
  {
    static struct Tracks *current_track = NULL;
    static bool current_track_recording = false;
    
    struct Tracks *track = wblock->wtrack->track;
    if (track != current_track || (current_track!=NULL && track->is_recording != current_track_recording)){
      current_track = track;
      current_track_recording = current_track->is_recording;
      GL_create(window, wblock);
    }
  }

  //GE_set_curr_realline(wblock->curr_realline);
  //  printf("till_curr_realline: %d\n",wblock->till_curr_realline);
  //ScrollEditorToRealLine(window,wblock,wblock->curr_realline);
}
Esempio n. 3
0
static void setit(struct WBlocks *wblock, int realline){
  if (!ATOMIC_GET(root->play_cursor_onoff)){
    
    // Set current realline in main thread (main thread picks up till_curr_realline and sets curr_realline afterwards)
    //printf("   Setting till_curr_realline to %d\n", realline);
    ATOMIC_SET(wblock->till_curr_realline, realline);
    
    // Set current realline in opengl thread
    //printf("PEQ: set realline %d\n",realline);
    GE_set_curr_realline(realline);
    
  }
  
  PC_Pause_set_pos(wblock->l.num, realline);
}
Esempio n. 4
0
void Scroll_scroll(
                   struct Tracker_Windows *window,
                   int num_lines
){

  bool dopause = (ATOMIC_GET(root->play_cursor_onoff)==false);
  
  if (dopause)
    PC_Pause();
  
//  int lokke;
	struct WBlocks *wblock=window->wblock;

#if !USE_OPENGL

	int top_realline=wblock->top_realline;
	int bot_realline=wblock->bot_realline;

	/*
	if(num_lines<0){
		Scroll_freePixMapLines(window,bot_realline+num_lines+1,bot_realline);
	}else{
		Scroll_freePixMapLines(window,top_realline,top_realline+num_lines-1);
	}

//	printf("scroll1:\n");
//  for(lokke=0;lokke<window->wblock->num_visiblelines;lokke++)
//    printf("vis: %d, val: %d\n",lokke,window->pixmapdefs[lokke]);

	*/

	//	Scroll_scrollPixMapDefs(window,num_lines);

	PixMap_scrollDefs(
		window,
		num_lines
	);
#endif

//	printf("scroll2:\n");
//  for(lokke=0;lokke<window->wblock->num_visiblelines;lokke++)
//    printf("vis: %d, val: %d\n",lokke,window->pixmapdefs[lokke]);

	wblock->top_realline+=num_lines;
	wblock->curr_realline+=num_lines;
	wblock->bot_realline+=num_lines;

        //printf("scroll: Set realline to %d (%d)\n",wblock->curr_realline,num_lines);
        GE_set_curr_realline(wblock->curr_realline);

#if !USE_OPENGL
	if(num_lines<0){
		Scroll_makePixMapLines(window,top_realline+num_lines,top_realline-1);
	}else{
		Scroll_makePixMapLines(window,bot_realline+1,bot_realline+num_lines);
	}
#endif

        if (dopause)
          PC_StopPause(window);

        
//	printf("scroll3: n: %d\n",num_lines);
//  for(lokke=0;lokke<window->wblock->num_visiblelines;lokke++)
//    printf("vis: %d, val: %d\n",lokke,window->pixmapdefs[lokke]);

	/*
	Scroll_drawPixMaps(window,wblock->top_realline,wblock->bot_realline);
	*/
}