Esempio n. 1
0
static int w_scanblt(SCANBLT **scanblt)
{
	LOGSTR((LF_LOG, "w_scanblt: x_scanblt(%p)\n", scanblt));

	if (!x_scanblt(scanblt))
		return (0);







	LOGSTR((LF_LOG, "w_scanblt: %p->refcnt = %d\n",
		*scanblt, (*scanblt)->refcnt));

	if ((*scanblt)->refcnt != 1)
	{
		LOGSTR((LF_LOG, "w_scanblt: dup_scanblt(%p)\n", *scanblt));
		*scanblt = dup_scanblt(*scanblt);
	}

	LOGSTR((LF_LOG, "w_scanblt: *%p = %p\n", scanblt, *scanblt));

	return (*scanblt) ? (*scanblt)->x1 - (*scanblt)->x0 : 0;

}
Esempio n. 2
0
static int x_scanblt(SCANBLT **scanblt)
{
	LOGSTR((LF_LOG, "x_scanblt: %p\n", scanblt));

	if (!scanblt)
		return (0);

	LOGSTR((LF_LOG, "x_scanblt: *%p = %p\n", scanblt, *scanblt));

	if (!*scanblt)
	{
		if (!(*scanblt = (SCANBLT *) WinMalloc(sizeof(SCANBLT))))
		{
			return (0);
		}
		LOGSTR((LF_LOG, "x_scanblt: *%p = %p\n", scanblt, *scanblt));
		(*scanblt)->refcnt = 1;
		(*scanblt)->x0 = 0;
		(*scanblt)->x1 = 0;
		(*scanblt)->x = (void *) 0;
	}

	return ((*scanblt)->refcnt);

}
Esempio n. 3
0
static void free_scanblt(SCANBLT **scanblt)
{
	LOGSTR((LF_LOG, "free_scanblt: %p\n", scanblt));

	if (!scanblt)
		return;

	LOGSTR((LF_LOG, "free_scanblt: *%p = %p\n", scanblt, *scanblt));

	if (!*scanblt)
		return;

	LOGSTR((LF_LOG, "free_scanblt: %p->refcnt = %d\n",
		*scanblt, (*scanblt)->refcnt));

	if (--((*scanblt)->refcnt) == 0)
	{
		LOGSTR((LF_LOG, "free_scanblt: free %p\n", *scanblt));
		WinFree(*scanblt);
	}

	*scanblt = (SCANBLT *) 0;

	LOGSTR((LF_LOG, "free_scanblt: *%p = %p\n", scanblt, *scanblt));

}
/*
 *  ======== main ========
 */
Int main(Int argc, Char* argv[])
{
    Error_Block     eb;
    Task_Params     taskParams;


    Log_print0(Diags_INFO, LOGSTR(1));

    /* must initialize the error block before using it */
    Error_init(&eb);

    /* create main thread (interrupts not enabled in main on BIOS) */
    Task_Params_init(&taskParams);
    taskParams.instance->name = "smain";
    taskParams.arg0 = (UArg)argc;
    taskParams.arg1 = (UArg)argv;
    taskParams.stackSize = 0x700;
    Task_create(smain, &taskParams, &eb);

    if (Error_check(&eb)) {
        System_abort((String)(LOGSTR(13)));
    }

    /* start scheduler, this never returns */
    BIOS_start();

    /* should never get here */
    return(0);
}
Esempio n. 5
0
static int w_worldblt(WORLDBLT **worldblt, int y)
{
	LOGSTR((LF_LOG, "w_worldblt: x_worldblt(%p, %d)\n", worldblt, y));

	if (!x_worldblt(worldblt, y))
		return (0);

	LOGSTR((LF_LOG, "w_worldblt: w_scanblt(%p)\n", (*worldblt)->y + y));

	return (w_scanblt((*worldblt)->y + y));

}
Esempio n. 6
0
BOOL WINAPI
PeekMessage(LPMSG lpMsg, HWND hWnd, UINT uMin, UINT uMax,UINT uFlg)
{
    BOOL bRet;
    static MSG msg;
    static BOOL bState;

    APISTR((LF_APICALL,"PeekMessage(LPMSG=%x,HWND=%x,UINT=%x,UINT=%x,UINT=%x)\n",
	lpMsg,hWnd,uMin,uMax,uFlg));

    if ((bRet = TWIN_DriverMessage(lpMsg,hWnd,uMin,uMax,uFlg,TRUE))) {
	if (lpHookList[WH_GETMESSAGE+1]) {
	    lpHookList[WH_GETMESSAGE+1]->lpfnHookProc(0,0,(LPARAM)lpMsg);
	}
    }

    if (bRet) {
	msg = *lpMsg;
	bState = FALSE;
       LOGSTR((LF_MSGRET,"[HWND=%x,UINT=%x:%s,LPARAM=%x,LPARAM=%x]\n",
		lpMsg->hwnd,lpMsg->message,
		GetTwinMsgCode(lpMsg->hwnd, lpMsg->message),
		lpMsg->wParam,lpMsg->lParam));
        APISTR((LF_APIRET,"PeekMessage: returns BOOL %x\n",TRUE));
	return TRUE;
    }
    else {
	if (bState && uMin == WM_MOUSEMOVE && uMax == WM_MOUSEMOVE) {
	    *lpMsg = msg;
	    lpMsg->message = WM_MOUSEMOVE;
	    bState = FALSE;
       LOGSTR((LF_MSGRET,"[HWND=%x,UINT=%x:%s,LPARAM=%x,LPARAM=%x]\n",
		lpMsg->hwnd,lpMsg->message,
		GetTwinMsgCode(lpMsg->hwnd, lpMsg->message),
		lpMsg->wParam,lpMsg->lParam));
            APISTR((LF_APIRET,"PeekMessage: returns BOOL %x\n",TRUE));
	    return TRUE;
	}
	if (msg.message == WM_MOUSEMOVE) {
	    msg.message = WM_ENTERIDLE;
	    bState = TRUE;
	}
	else
	    bState = FALSE;

       LOGSTR((LF_MSGRET,"[HWND=%x,UINT=%x:%s,LPARAM=%x,LPARAM=%x]\n",
		lpMsg->hwnd,lpMsg->message,
		GetTwinMsgCode(lpMsg->hwnd, lpMsg->message),
		lpMsg->wParam,lpMsg->lParam));
        APISTR((LF_APIRET,"PeekMessage: returns BOOL %x\n",FALSE));
	return FALSE;
    }
}
Esempio n. 7
0
static WORLDBLT *xscaleblt(WORLDBLT *worldblt, double m11)
{
	/* perform scale operation
	 *	| m11   0   0 |
	 *	|   0   1   0 |
	 *	|   0   0   1 |
	 */

	int m11_numer, m11_denom;

	fraction(m11, &m11_numer, &m11_denom);

	LOGSTR((LF_LOG, "xscaleblt: %p, m11 = %f = (%d / %d)\n",
		worldblt, m11, m11_numer, m11_denom));

	if (!worldblt)
		return ((WORLDBLT *) 0);

	if (m11_numer == m11_denom)
		return (worldblt);

	if (m11_numer == -m11_denom)
		return (xmirrorblt(worldblt));

	if (m11_numer < 0)
	{
		worldblt = xmirrorblt(worldblt);
		m11 = -m11;
		m11_numer = -m11_numer;
		LOGSTR((LF_LOG, "xscaleblt: %p, m11 = %f = (%d / %d)\n",
			worldblt, m11, m11_numer, m11_denom));
	}

	if (m11_denom < 0)
	{
		worldblt = xmirrorblt(worldblt);
		m11 = -m11;
		m11_denom = -m11_denom;
		LOGSTR((LF_LOG, "xscaleblt: %p, m11 = %f = (%d / %d)\n",
			worldblt, m11, m11_numer, m11_denom));
	}




	return (worldblt);

}
Esempio n. 8
0
 void functor_base::dump (std::string msg)
 {
   LOGSTR (DEBUG, "functor_base dump")
     << " (" << this << ") : " 
     << saga::util::demangle (typeid (*this).name ()) 
     << std::endl;
 }
Esempio n. 9
0
LONG WINAPI
DispatchMessage(const MSG *lpMsg)
{
    TIMERPROC	lpfnTimerProc;
    LONG	rc = 0L;

    APISTR((LF_APICALL,"DispatchMessage(MSG *%x)\n", lpMsg));

    if((lpMsg->message == WM_TIMER || lpMsg->message == WM_SYSTIMER) && 
	(lpfnTimerProc = (TIMERPROC)lpMsg->lParam)) {

        LOGSTR((LF_MSGRET,"[HWND=%x,UINT=%x:%s,LPARAM=%x,LPARAM=%x]\n",
		lpMsg->hwnd,lpMsg->message,
		GetTwinMsgCode(lpMsg->hwnd, lpMsg->message),
		lpMsg->wParam,lpMsg->lParam));

	lpfnTimerProc(lpMsg->hwnd,lpMsg->message,(UINT)lpMsg->wParam,
			GetTickCount());
        APISTR((LF_APIRET,"DispatchMessage: returns LONG 1L\n"));
	return 1L;
    }

    if (lpMsg->hwnd)
	rc =  SendMessage(lpMsg->hwnd,lpMsg->message,
			   lpMsg->wParam,lpMsg->lParam);
    APISTR((LF_APIRET,"DispatchMessage: returns LONG %d\n",rc));
    return 0L;
}
Esempio n. 10
0
 void impl_base::dump (std::string msg)
 {
   LOGSTR (DEBUG, "impl_base dump") << "impl_base (" << this << ") : " << saga::util::demangle (typeid (*this).name ()) 
             << " : " << msg  << std::endl;
   engine_.dump ("    engine_     : ");
   engine_->dump();
 }
Esempio n. 11
0
BOOL WINAPI
GetMessage(LPMSG lpMsg, HWND hWnd, UINT uMin, UINT uMax)
{
    DWORD	pos=0;
    BOOL	rc;

    APISTR((LF_APICALL,"GetMessage(LPMSG=%x,HWND=%x,UINT=%x,UINT=%x)\n",
	lpMsg,hWnd,uMin,uMax));

    TWIN_DriverMessage(lpMsg,hWnd,uMin,uMax,PM_REMOVE,FALSE);
    if(DebugMessage == lpMsg->message)
	pos++;

    if((pos = MAKELONG( lpMsg->pt.x,lpMsg->pt.y)))
	LastMessagePos = pos;	

    if(lpMsg->time)
    	LastMessageTime = lpMsg->time;
    
    LOGSTR((LF_MSGRET,"[HWND=%x,UINT=%x:%s,LPARAM=%x,LPARAM=%x]\n",
	lpMsg->hwnd,lpMsg->message,
	GetTwinMsgCode(lpMsg->hwnd, lpMsg->message),
	lpMsg->wParam,lpMsg->lParam));

    rc = lpMsg->message != WM_QUIT;
    APISTR((LF_APIRET,"GetMessage: returns BOOL %x\n",rc));
    return rc;
}
Esempio n. 12
0
 void cpi_base::dump (std::string msg)
 {
   LOGSTR (DEBUG, "cpi_base dump")
     << "cpi_base (" << this << ") : " 
         << saga::util::demangle (typeid (*this).name ()) << " : " 
            << msg << std::endl;
 }
Esempio n. 13
0
DWORD
lsd_display_escape(WORD msg, HDC32 hDC32, DWORD dwParam,
			LPLSDS_PARAMS lpStruct)
{
    int nInt;

    switch (dwParam) {
	case GETTECHNOLOGY:
	    return DRVCALL_GRAPHICS(PGH_GETDEVICECAPS,
			hDC32->lpDrvData,TECHNOLOGY,0);

	case MFCOMMENT:
	    return 0L;

	case QUERYESCSUPPORT:
	    nInt = *((int *)lpStruct->lsde.escape.lpszInData);
	    LOGSTR((LF_LOG,"ESCAPE: QUERYESCSUPPORT for DISPLAY, func %x\n",
				nInt));
	    return 0L;


	default:
	    return 0L;
    }
}
Esempio n. 14
0
 virtual void dump (std::string msg = "")
 {
   LOGSTR (DEBUG, "task dump") 
     << "impl::task (" << this << ") : " << saga::util::demangle (typeid (*this).name ()) << " : " << msg << std::endl;
   idata_.dump ("    idata_      : ");
   idata_->dump();
 }
Esempio n. 15
0
static WORLDBLT *yscaleblt(WORLDBLT *worldblt, double m22)
{
	/* perform scale operation
	 *	|   1   0   0 |
	 *	|   0 m22   0 |
	 *	|   0   0   1 |
	 */

	int m22_numer, m22_denom;

	fraction(m22, &m22_numer, &m22_denom);

	LOGSTR((LF_LOG, "yscaleblt: %p, m22 = %f = (%d / %d)\n",
		worldblt, m22, m22_numer, m22_denom));

	if (!worldblt)
		return ((WORLDBLT *) 0);

	if (m22_numer == m22_denom)
		return (worldblt);

	if (m22_numer == -m22_denom)
		return (ymirrorblt(worldblt));

	if (m22_numer < 0)
	{
		worldblt = ymirrorblt(worldblt);
		m22 = -m22;
		m22_numer = -m22_numer;
		LOGSTR((LF_LOG, "yscaleblt: %p, m22 = %f = (%d / %d)\n",
			worldblt, m22, m22_numer, m22_denom));
	}

	if (m22_denom < 0)
	{
		worldblt = ymirrorblt(worldblt);
		m22 = -m22;
		m22_denom = -m22_denom;
		LOGSTR((LF_LOG, "yscaleblt: %p, m22 = %f = (%d / %d)\n",
			worldblt, m22, m22_numer, m22_denom));
	}



	return (worldblt);

}
Esempio n. 16
0
 void dump (std::string msg = "")
 {
   LOGSTR (DEBUG, "task_instance_data dump") 
     << "(" << this << ") : " << saga::util::demangle (typeid (*this).name ()) << " : " << msg << std::endl
     << "    t_cc        : " << std::endl;
   t_cc.dump ();
   t_cc->dump ();  // should give infinite recursion!
 }
Esempio n. 17
0
static WORLDBLT *yshearblt(WORLDBLT *worldblt, double m21)
{
	/* perform shear operation
	 *	|   1   0   0 |
	 *	| m21   1   0 |
	 *	|   0   0   1 |
	 */

	int y;
	double dx;

	LOGSTR((LF_LOG, "yshearblt: %p, m21 = %f\n", worldblt, m21));

	if (!worldblt)
		return ((WORLDBLT *) 0);

	if (fabs((worldblt->y1 - worldblt->y0) * m21) < 0.5)
		return (worldblt);

	LOGSTR((LF_LOG, "yshearblt: x0 = %d, x1 = %d, y0 = %d, y1 = %d\n",
		worldblt->x0, worldblt->x1, worldblt->y0, worldblt->y1));

	worldblt->x0 = INT_MAX;
	worldblt->x1 = INT_MIN;
	for (y = worldblt->y0, dx = y * m21; y < worldblt->y1; y++, dx += m21)
	{
		if (!x_worldblt(&worldblt, y))
		{
			continue;
		}
		LOGSTR((LF_LOG, "yshearblt: [%d] x0 = %d, x1 = %d\n",
			y, worldblt->y[y]->x0, worldblt->y[y]->x1));
		worldblt->y[y]->x0 += dx;
		worldblt->y[y]->x1 += dx;
		worldblt->x0 = min(worldblt->x0, worldblt->y[y]->x0);
		worldblt->x1 = max(worldblt->x1, worldblt->y[y]->x1);
		LOGSTR((LF_LOG, "yshearblt: [%d] x0 = %d, x1 = %d\n",
			y, worldblt->y[y]->x0, worldblt->y[y]->x1));
	}

	LOGSTR((LF_LOG, "yshearblt: x0 = %d, x1 = %d, y0 = %d, y1 = %d\n",
		worldblt->x0, worldblt->x1, worldblt->y0, worldblt->y1));

	return (worldblt);

}
Esempio n. 18
0
        T get_result (void)
        {
          SAGA_UTIL_STACKTRACE ();

          // FIXME: error check: is cast valid?
          LOGSTR (DEBUG, "saga::async::task get_result") << " getting task result" << std::endl;

          return impl_->get_result ()->get <T> (); 
        }
Esempio n. 19
0
 void dump (std::string msg = "")
 {
   LOGSTR (DEBUG, "func_0 dump") 
     << "func (" << this << ") : " << saga::util::demangle (typeid (*this).name ()) << " : " << msg << std::endl
     << "    call        : " << saga::util::demangle (typeid (call_).name ()) << " : " << this->get_name () << std::endl
     << "    IMPL        : " << saga::util::demangle (typeid (IMPL ).name ()) << std::endl
     << "    CPI         : " << saga::util::demangle (typeid (CPI  ).name ()) << std::endl
     << "    RET         : " << saga::util::demangle (typeid (RET  ).name ()) << std::endl;
 }
Esempio n. 20
0
 void dump (std::string msg = "")
 {
   LOGSTR (DEBUG, "impl::file dump") 
     << "impl::file (" << this << ") : " 
     << saga::util::demangle (typeid (*this).name ()) << " : " << msg << std::endl
     << "    valid       : " << valid_ << std::endl
     << "    url         : " << url_   << std::endl
     << "    pos         : " << pos_   << std::endl;
 }
Esempio n. 21
0
    void engine::dump (std::string msg)
    {
      LOGSTR (DEBUG, "engine dump") 
        << "engine (" << this << ") : " << saga::util::demangle (typeid (*this).name ()) << " : " << msg << std::endl;

      for ( unsigned int i = 0; i < cpis_.size (); i++ )
      {
        cpis_[i].dump();
      }
    }
Esempio n. 22
0
 virtual void dump (std::string msg = "")
 {
   LOGSTR (DEBUG, "func dump")
     << "func         : " << this << " : " << saga::util::demangle (typeid (*this).name ()) << std::endl
     << "    IMPL        : " << saga::util::demangle (typeid (IMPL ).name ()) << std::endl
     << "    CPI         : " << saga::util::demangle (typeid (CPI  ).name ()) << std::endl
     << "    RET         : " << saga::util::demangle (typeid (RET  ).name ()) << std::endl;
   result_.dump       ("    result_     : ");
   if ( result_ )
     result_->dump    ();
 }
Esempio n. 23
0
    //////////////////////////////////////////////////////////////////////
    //
    // the SAGA Engine implementation, which loads all adaptors, and 
    // supports the SAGA file implementation.
    //
    // In reality, adaptor registration will be more complex:  if an adaptor
    // registers, the engine will inspect it, to register it for all CPI's it
    // knows about:
    //
    //   if ( adaptor.is_a <saga_object> () )
    //     object_cpis.push_back (adaptor);
    //   if ( adaptor.is_a <saga_attribute> () )
    //     attribute_cpis.push_back (adaptor);
    //   ...
    //
    // or something slightly more clever ;-)
    //
    engine::engine (void)
    {
      SAGA_UTIL_STACKTRACE ();

      LOGSTR (INFO, "engine") << "engine: register all adaptors";

      // create and register adaptor instances
      cpis_.push_back (open_adaptor <saga::adaptor::test::file_adaptor_0> ());
      cpis_.push_back (open_adaptor <saga::adaptor::test::file_adaptor_1> ());
      cpis_.push_back (open_adaptor <saga::adaptor::test::dir_adaptor_0>  ());
      cpis_.push_back (open_adaptor <saga::adaptor::test::dir_adaptor_1>  ());
      cpis_.push_back (open_adaptor <saga::adaptor::test::task_adaptor_0> ());
    }
Esempio n. 24
0
        T get_result  (void) 
        {
          SAGA_UTIL_STACKTRACE ();

          if ( ! result_ )
          {
            // no type set, yet
            SAGA_UTIL_STACKDUMP ();
            throw "result type is not yet set";
          }

          if ( ! has_result_type <T> () )
          {
            LOGSTR (DEBUG, "call_context get_result") << "requested " << saga::util::demangle (typeid (T).name ()) << std::endl;
            LOGSTR (DEBUG, "call_context get_result") << "available " << result_->get_ptype () << std::endl;

            SAGA_UTIL_STACKDUMP ();
            throw "Incorrect result type requested";
          }

          return result_->get <T> ();
        }
Esempio n. 25
0
        void set_result (T res)
        {
          // FIXME: make sure this is called only once, or, at least, always
          // called with the same type.  We might want to do that on
          // result_t_detail level though.  Also, this ambiguity would be
          // avoided by class level templatization

          SAGA_UTIL_STACKTRACE ();

          LOGSTR (DEBUG, "call_context set_result") << "typeset   " << saga::util::demangle (typeid (T).name ()) << std::endl;

          result_->set <T> (res);
        }
Esempio n. 26
0
static SCANBLT *not_scanblt(SCANBLT *scanblt1)
{
	SCANBLT *scanblt = dup_scanblt(scanblt1);

	LOGSTR((LF_LOG, "not_scanblt: %p = ~%p\n", scanblt, scanblt1));

	if (scanblt && w_scanblt(&scanblt))
	{
	}

	return (scanblt);

}
Esempio n. 27
0
static void fraction(double f, int *numer, int *denom)
{
	double emax, e;
	int n, d;

	LOGSTR((LF_LOG, "fraction: %f\n", f));

	emax = 1.0e6;
	for (d = 16; d > 0; --d)
	{
		n = (int)(f * d);
		e = fabs(f - ((double) n / (double) d));
		if (e <= emax)
		{
			emax = e;
			*numer = n;
			*denom = d;
			LOGSTR((LF_LOG, " = (%d / %d) +/- %f\n", n, d, emax));
		}
	}

}
Esempio n. 28
0
int WINAPI
ToAscii(UINT uVirtKey, UINT uScanCode, BYTE *lpbKeyState,
        DWORD *lpdwTransKey, UINT fuState)
{
    LPSTR lpKeyBuffer = (LPSTR)lpdwTransKey;

    LOGSTR((LF_API,"ToAscii STUB: (%x,%x,%x,%x,%x)\n",
        uVirtKey,uScanCode,lpbKeyState,lpdwTransKey,fuState));

    /* virtual key is ascii, but need to account for shift keys... */
    *lpKeyBuffer = uVirtKey;

    return 1;
}
Esempio n. 29
0
static SCANBLT *xor_scanblt(SCANBLT *scanblt1, SCANBLT *scanblt2)
{
	SCANBLT *scanblt = dup_scanblt(scanblt1);

	LOGSTR((LF_LOG, "xor_scanblt: %p = %p ^ %p\n",
		scanblt, scanblt1, scanblt2));

	if (scanblt)
	{
	}

	return (scanblt);

}
Esempio n. 30
0
/**
 * @brief Sets the hostname of the socket.
 * @param[in] hostname A string value that equal to the hostname of the socket.
 * @retval false Returned if the hostname is empty.
 * @retval true Returned if the hostname was successfully set.
 */
const bool Socket::sHostname( const string& hostname )
{
    UFLAGS_DE( flags );

    if ( hostname.empty() )
    {
        LOGSTR( flags, "Socket::sHostname()-> called with empty hostname" );
        return false;
    }

    m_hostname = hostname;

    return true;
}