Пример #1
0
static DBusHandlerResult
signal_filter (DBusConnection *connection, DBusMessage *message, void *user_data)
{
  /* User data is the event loop we are running in */
  //GMainLoop *loop = user_data;

  /* A signal from the bus saying we are about to be disconnected */
  if (dbus_message_is_signal
        (message, DBUS_INTERFACE_LOCAL, "Disconnected")) {
    /* Tell the main loop to quit */
//    g_main_loop_quit (loop);
    /* We have handled this message, don't pass it on */
    return DBUS_HANDLER_RESULT_HANDLED;
  }
  else if (dbus_message_is_signal (message, "org.freedesktop.MediaPlayer", "TrackChange") ||
           dbus_message_is_signal (message, "org.freedesktop.DBus.Properties", "PropertiesChanged")) {
    DBusError error;
    DBusMessageIter iter;
    dbus_error_init (&error);

    mylog("DBUS>> GOT SIGNAL!!!\n");
    dbus_message_iter_init (message, &iter);
    last_string[0]='\0';
    varian_now=0;
    do_iter(&iter);
    return DBUS_HANDLER_RESULT_HANDLED;
  }
  return DBUS_HANDLER_RESULT_NOT_YET_HANDLED;
}
Пример #2
0
int main() {
  int x, y;
  for (y = -FRAC_ONE+STEP_SIZE; y < FRAC_ONE; y += STEP_SIZE) {
    for (x = -3*FRAC_ONE+STEP_SIZE; x < 2*FRAC_ONE; x += STEP_SIZE) {
      int val = do_iter(x, y, MAX_SQUARE, MAX_ITER);
      WRITE(&(map[val & 0xf]), 1);
    }
    WRITE("\n", 1);
  }
  return 0;
}
Пример #3
0
static void slave(void) {
  int slave_id = core_id-1;

  while (slave_mpb[slave_id]->packet.cmd != CMD_START) {
    /* spin until start packet arrives */
  }
  /* respond to start packet */
  slave_mpb[slave_id]->row.cmd = CMD_START;
  DMA(0, &(master_mpb->slave[slave_id].row),
      &(slave_mpb[slave_id]->row),
      sizeof(struct rowbuf_t));

  /* loop while new packets arrive */
  for (;;) {
    while (slave_mpb[slave_id]->packet.cmd <= CMD_NULL
           && slave_mpb[slave_id]->packet.cmd != CMD_STOP) {
      /* spin until packet arrives */
    }
    /* terminate if stop packet arrives */
    if (slave_mpb[slave_id]->packet.cmd == CMD_STOP) {
      break;
    }

    /* copy packet to local memory */
	struct packet_t _SPM *ptr = &(slave_mpb[slave_id]->packet);
    struct packet_t p __attribute__ ((aligned (4)));
	p.yval = ptr->yval;
	p.xstart = ptr->xstart;
	p.xend = ptr->xend;
	p.xstep = ptr->xstep;
	p.cmd = ptr->cmd;
    /* clear command */
    slave_mpb[slave_id]->packet.cmd = CMD_NULL;
    /* compute pixels for one row */
    int x, idx;
    for (idx = 0, x = p.xstart; x < p.xend; idx++, x += p.xstep) {
      int val = do_iter(x, p.yval, MAX_SQUARE, MAX_ITER);
      slave_mpb[slave_id]->row.data[idx] = map[val & 0x3f];
    }
    /* send row */
    slave_mpb[slave_id]->row.cmd = p.cmd;
    DMA(0, &(master_mpb->slave[slave_id].row),
        &(slave_mpb[slave_id]->row),
        sizeof(struct rowbuf_t));
  }
}
Пример #4
0
int main(void) {
#else
int main(int argc, char **argv) {
#endif

  write_xpm_header();

  int x, y;
  for (y = YSTART; y < YEND; y += YSTEP_SIZE) {
    WRITE("\"", 1);
    for (x = XSTART; x < XEND; x += XSTEP_SIZE) {
      int val = do_iter(x, y, MAX_SQUARE, MAX_ITER);
      WRITE(&(map[val & 0x3f]), 1);
    }
    WRITE("\",\n", 3);
  }
  WRITE("};\n", 3);

  return 0;
}
Пример #5
0
void	draw_fract(t_env *e)
{
	int			i;
	double		re;
	double		im;

	e->win_x = 0;
	while (e->win_x < WIN_WIDTH)
	{
		e->win_y = 0;
		while (e->win_y < WIN_HEIGHT)
		{
			set_env_values(e, &re, &im);
			i = do_iter(e, re, im);
			ft_putpix(e, e->win_x, e->win_y,
				coloring(i, e->new_r, e->new_i) * (i < e->max_i));
			e->win_y++;
		}
		e->win_x++;
	}
}
Пример #6
0
static void
do_iter (DBusMessageIter *iter)
{
  static struct timeval album_time={0,0}, artist_time={0,0}, title_time={0,0}, now_time={0,0};
  char *decoded;
  int pos, len, i;
	do
		{
			int type = dbus_message_iter_get_arg_type (iter);
			const char *str;

			if (type == DBUS_TYPE_INVALID)
				break;

			switch (type)
			{
				case DBUS_TYPE_STRING:
					dbus_message_iter_get_basic (iter, &str);
          if(varian_now){
            gettimeofday(&now_time,NULL);
            mylog("DBUS>> %s : '%s'\n",last_string,str);
            if((strcmp(ALBUM_STRING,last_string)==0) || (strcmp(ALBUM_STRING2,last_string)==0)){
              strncpy(album,str,MAX_STR_LEN);
              now_playing_changed=1;
              if(now_time.tv_sec-artist_time.tv_sec>DBUS_INTERVAL) artist[0]='\0';
              if(now_time.tv_sec-title_time.tv_sec >DBUS_INTERVAL) title[0]='\0';
              album_time.tv_sec=now_time.tv_sec;
              mylog("DBUS>> ALBUM='%s'\n",str);
            }
            else if((strcmp(TITLE_STRING,last_string)==0) || (strcmp(TITLE_STRING2,last_string)==0)){
              strncpy(title,str,MAX_STR_LEN);
              now_playing_changed=1;
              if(now_time.tv_sec-artist_time.tv_sec>DBUS_INTERVAL) artist[0]='\0';
              if(now_time.tv_sec-album_time.tv_sec >DBUS_INTERVAL) album[0]='\0';
              title_time.tv_sec=now_time.tv_sec;
              mylog("DBUS>> TITLE='%s'\n",str);
            }
            else if((strcmp(ARTIST_STRING,last_string)==0) || (strcmp(ARTIST_STRING2,last_string)==0)){
              strncpy(artist,str,MAX_STR_LEN);
              now_playing_changed=1;
              if(now_time.tv_sec-album_time.tv_sec>DBUS_INTERVAL) album[0]='\0';
              if(now_time.tv_sec-title_time.tv_sec>DBUS_INTERVAL) title[0]='\0';
              artist_time.tv_sec=now_time.tv_sec;
              mylog("DBUS>> ARTIST='%s'\n",str);
            }
            else if((now_playing_changed==0) &&
                    (strcmp(LOC_STRING,last_string)==0)){
              decoded=url_decode(str);
              len=strlen(decoded);
              pos=0;
              for(i=0;i<len;++i){
                if(decoded[i]=='/')
                  pos=i+1;
              }
              strncpy(title,decoded+pos,MAX_STR_LEN);
              free(decoded);
              now_playing_changed=1;
            }
          }
          strncpy(last_string,str,MAX_STR_LEN);
					break;
				case DBUS_TYPE_VARIANT:
				{
					DBusMessageIter subiter;
					dbus_message_iter_recurse (iter, &subiter);
//					printf ("variant:");
          varian_now=1;
					do_iter (&subiter);
					varian_now=0;
					break;
				}
				case DBUS_TYPE_ARRAY:
				{
					int current_type;
					DBusMessageIter subiter;

					dbus_message_iter_recurse (iter, &subiter);

//					printf("[");
					while ((current_type = dbus_message_iter_get_arg_type (&subiter))
						!= DBUS_TYPE_INVALID)
					{
						do_iter (&subiter);
						dbus_message_iter_next (&subiter);
//						if (dbus_message_iter_get_arg_type (&subiter) != DBUS_TYPE_INVALID)
//							printf (",");
					}
//					printf("]");
					break;
				}
				case DBUS_TYPE_DICT_ENTRY:
				{
					DBusMessageIter subiter;
					dbus_message_iter_recurse (iter, &subiter);
//					printf("{");
					do_iter (&subiter);
					dbus_message_iter_next (&subiter);
					do_iter (&subiter);
//					printf("}");
					break;
				}
				default:
					break;
				}

	} while (dbus_message_iter_next (iter));
}