<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
  <meta content="text/html; charset=ISO-8859-1"
 http-equiv="Content-Type">
  <title></title>
</head>
<body bgcolor="#ffffff" text="#000000">
Sorry, I should have explained the non-ENet functions. rest(1) is one
millisecond (of course on Windows it is really five milliseconds).
blit() is for drawing the screen (in this case the pixel data I have
received so far). I think the rest are pretty self explanatory.<br>
<br>
As I said, I got it working great when I removed ENet (and only
ENet/did not change anything else).<br>
<div class="moz-signature"><br>
<hr style="height: 1px;">
<p><span style="font-weight: bold;">Nicholas J Ingrassellino<br>
<a style="text-decoration: none;"
 href="http://www.lifebloodnetworks.com/" target="_blank">LifebloodNetworks.com</a></span>
|| <a style="text-decoration: none;"
 href="mailto:nick@lifebloodnetworks.com">nick@lifebloodnetworks.com</a></p>
<p style="font-size: 75%;">"<span style="font-style: italic;">The idea
that I can be presented with a problem, set out to logically solve it
with the tools at hand, and wind up with a program that could not be
legally used because someone else followed the same logical steps some
years ago and filed for a patent on it is horrifying.</span>"<br>
- <span style="font-weight: bold;">John Carmack</span> on software
patents</p>
</div>
<br>
On 09/26/2010 07:44 PM, Jay Sprenkle wrote:
<blockquote
 cite="mid:AANLkTim=+BOW1ow=wQwXNxs-we_5Fe5DouMy59BkvJU7@mail.gmail.com"
 type="cite">I assume "rest(1)" is a sleep function? for one second?<br>
If so you're only checking for a key press packet once per second (and
only processing one packet, even if more are waiting).<br>
  <br>
  <br>
  <div class="gmail_quote">On Sun, Sep 26, 2010 at 6:30 PM, Nicholas J
Ingrassellino <span dir="ltr">&lt;<a moz-do-not-send="true"
 href="mailto:nick@lifebloodnetworks.com">nick@lifebloodnetworks.com</a>&gt;</span>
wrote:<br>
  <blockquote class="gmail_quote"
 style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
    <div bgcolor="#ffffff" text="#000000">I am running a little
experiment in C++ using ENet v1.3.0 with MSVC
2k8. What I am attempting to create is a pure dumb terminal-style
application where all video is done on a remote server and sent to the
client while the client only sends over key presses. Yes, yes, I know;
I am reinventing the wheel and half the people reading this do not
approve. It is just an experiment I am doing for kicks.<br>
    <br>
My issue lies in ENet's CPU usage. I had noticed that during the
receiving/drawing step my client CPU usage went to 100% and was
reacting way too slow to do what I want to do. After a while I have
narrowed the problem down to ENet. I even went as far as taking ENet
out of the picture to be sure it was not something else using simulated
data as if it were received from the server (IE virtually not changing
my client main loop). Just so I have gone on the record as saying it
the client, once ENet is removed from the picture, can draw an image,
pixel by pixel, 60 times a second without breaking a sweat.<br>
    <br>
My server is sending 7 bytes (payload, of course) for each pixel. At
800x600x24 I am aware this is a hell of a lot of data but it is still
eating a lot more CPU than I figured it would on the client. The server
gets all the
data off in a timely fashion but the receiving side can not get it
nearly as fast as it was sent so it ends up backing up really quickly.
The client code looks like this:<br>
    <blockquote>while ( !main_loop_exit ) {
      <br>
&nbsp;&nbsp;&nbsp; acquire_screen();
      <br>
&nbsp;&nbsp;&nbsp; blit(buffer, screen, 0, 0, 0, 0, buffer-&gt;w, buffer-&gt;h);
      <br>
&nbsp;&nbsp;&nbsp; release_screen();
      <br>
      <br>
&nbsp;&nbsp;&nbsp; if ( keypressed() ) {
      <br>
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; unsigned char key_next = readkey() &amp; 0xff;
      <br>
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; ENetPacket *packet = enet_packet_create(&amp;key_next,
sizeof(unsigned char), ENET_PACKET_FLAG_RELIABLE);
      <br>
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; enet_peer_send(peer, 0, packet);
      <br>
&nbsp;&nbsp;&nbsp; }
      <br>
&nbsp;<br>
&nbsp;&nbsp;&nbsp; if ( enet_host_service(client, &amp;event, 0) &gt; 0 ) {
      <br>
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; if ( event.type == ENET_EVENT_TYPE_RECEIVE ) {
      <br>
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; _putpixel24(buffer, ((PACKET_PAYLOAD
*)event.packet-&gt;data)-&gt;x, ((PACKET_PAYLOAD
*)event.packet-&gt;data)-&gt;y, makecol(((PACKET_PAYLOAD
*)event.packet-&gt;data)-&gt;r, ((PACKET_PAYLOAD
*)event.packet-&gt;data)-&gt;g, ((PACKET_PAYLOAD
*)event.packet-&gt;data)-&gt;b));
      <br>
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; enet_packet_destroy(event.packet);
      <br>
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; }
      <br>
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; else if ( event.type == ENET_EVENT_TYPE_DISCONNECT )
      <br>
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; main_loop_exit = true;
      <br>
&nbsp;&nbsp;&nbsp; }
      <br>
&nbsp;&nbsp;&nbsp; else
      <br>
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; rest(1);
      <br>
}<br>
    </blockquote>
    <br>
    </div>
  </blockquote>
  </div>
  <br>
  <pre wrap="">
<fieldset class="mimeAttachmentHeader"></fieldset>
_______________________________________________
ENet-discuss mailing list
<a class="moz-txt-link-abbreviated" href="mailto:ENet-discuss@cubik.org">ENet-discuss@cubik.org</a>
<a class="moz-txt-link-freetext" href="http://lists.cubik.org/mailman/listinfo/enet-discuss">http://lists.cubik.org/mailman/listinfo/enet-discuss</a>
  </pre>
</blockquote>
</body>
</html>