|
HTTP doesn't really do this. The only possible mechanism for it's implementation is using HTTP/1.1 range header... http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.35
You are probably thinking of FTP resume though.
Signature space for rent. Apply by email to....
|
|
|
|
|
Hi,
I have few questions about CCriticalSection usage:
1)
What is the purpose of the following code ?
<br />
CSomeClass::someFunc()<br />
{<br />
.<br />
.
.<br />
cs.Lock();
cs.Unlock();<br />
.<br />
.
.<br />
}<br />
What's the sense ? Why it calls Lock() and immediately after it Unlock() ???
I was very surprised when I found this piece of code in MSDN...
Why it isn't written this way ?
<br />
CSomeClass::someFunc()<br />
{<br />
cs.Lock();
.<br />
. <br />
.
.<br />
. <br />
.<br />
cs.Unlock();<br />
}<br />
???
2)
Is it safe to use CCriticalSection object directly, without using it together with CSingleLock ???
3)
In my program, calling CCriticalSection::Lock() sometimes blocks program execution and never returns. It just freezes the application. In which cases it happens ? Is there any way to avoid this behaviour ?
Any help or suggestion will be appreciated, thanks in advance.
Standa.
Celebrate Mr. Cesilko!
|
|
|
|
|
It has been sometime since I dealt with this, so please forgive the vagness.
Anyway, I think you need to declare the CS like this
volatile CCriticalSection cs;
otherwise the compiler will wrongly optimize the cs itself. If this does not work you may need to
volatile BOOL bHasLock; and test bHasLock before Locking and Unlocking.
It has been a long time, I just do not remember. But the voliatile keyword is a must to prevent the compiler optimize problems.
Phil F
|
|
|
|
|
Hi, I just started with DX8, and I'm trying to make a point light source over a small flat square (2 triangles). All parameters seem be make sense, but I get a black square, as if no light is applied. I've changed the background color to sth brighter than 0.0, to make sure that the square is actually rendered (and not culled for example).
I have my vertex setup using the XYZ | NORMAL flags, and my vertex struct looks like this:
struct MYVERTEX
{
float x,y,z;
float nx,ny,nz;
};
My vertex buffer is two triangles stuck together facing "up", and they create a small square on "the floor". As use can see, they are defined clockwise, like they're supposed to:
{-2.0f,0.0f,-2.0f, 0.0f,1.0f,0.0f},
{-2.0f,0.0f,2.0f, 0.0f,1.0f,0.0f},
{2.0f,0.0f,2.0f, 0.0f,1.0f,0.0f},
{-2.0f,0.0f,-2.0f, 0.0f,1.0f,0.0f},
{2.0f,0.0f,2.0f, 0.0f,1.0f,0.0f},
{2.0f,0.0f,-2.0f, 0.0f,1.0f,0.0f}
I initialize the light after initializing the device.
This is a snippet of my GameInit() function:
...
light.Type = D3DLIGHT_POINT;
light.Diffuse = D3DXCOLORVALUE(1.0f,1.0f,1.0f,1.0f);
light.Position = D3DXVECTOR3(0.0f,10.0f,0.0f);
light.Range = 100.0f;
pDev->SetLight(0, &light);
pDev->LightEnable(0, TRUE);
...
Notes:
the D3DXCOLORVALUE is just a wrapper for the D3DCOLORVALUE struct, that supplies a ctor
'pDev' is a HAL rendering device with software vertex processing.
I'm working in windowed mode
Backface culling NOT disabled.
This is another snippet, from my Render() function, to show what material I use:
...
// initialize material:
static D3DMATERIAL8 mat;
ZeroMemory(&mat, sizeof(mat));
mat.Ambient = D3DXCOLORVALUE(1.0f,1.0f,1.0f,1.0f);
mat.Diffuse = D3DXCOLORVALUE(1.0f,0.0f,0.0f,1.0f);
pDev->SetMaterial(&mat);
...
I even added a small feature to help me control the light position in real time, so that I see how changes in its distance from the square affect the lighting, but no matter how close or how far I bring it, the square stays black!
Well, that's about it. Like I said, I don't get any light. Any ideas? I'm sure the normals are correct and so is everything else. Please help.... Thanks!
/=/=/=/=
Deus
/=/=/=/=
|
|
|
|
|
You want to try to find more specialized forums
Michel
It is a lovely language, but it takes a very long time to say anything in it, because we do not say anything in it, unless it is worth taking a very long time to say, and to listen to.
- TreeBeard
|
|
|
|
|
Hi,
My App creates an array of sockets and listen()'s on them all. I run the following code to handle the connection attemps. The array of events is 1 event per socket, looking for FD_ACCEPT.
while (TRUE)
{
lEventFlagged = WSAWaitForMultipleEvents( lAddrCount,
pEvents,
FALSE,
WSA_INFINITE,
FALSE);
if (lEventFlagged == WSA_WAIT_TIMEOUT)
continue;
lEventFlagged -= WSA_WAIT_EVENT_0;
SOCKET client;
if ( (client = accept(pSockets[lEventFlagged],NULL,NULL)) != INVALID_SOCKET)
{
send(client,"hi\r\n",4,0);
closesocket(client);
}
else
{
OutputDebugString("invalid socket");
}
}
Everything initially runs fine. The WSAWaitForMultipleEvents() blocks as i would expect. When I try and connect, the function returns. I successfully accept the socket, send data ("Hi") and then close the socket. Then I loop again. I now want to be waiting for more connections... However, this time, WSAWaitForMultipleEvents returns immediately, with the same event set as before. This time, accept fails with INVALID_SOCKET. WSAGetLastError returns 100035, "A non-blocking socket operation could not be completed immediately. ". Which is to be expected because there are no pending connections. I just don't understand why the event is still set.
I believe that the event should reset itself. MSDN says of WSAEventSelect:
"Having successfully recorded the occurrence of the network event... and signaled the associated event object, no further actions are taken for that network event until the application makes the function call that implicitly reenables the setting of that network event and signaling of the associated event object."
Furthermore, it goes on to say that accept() is a reenabling function for FD_ACCEPT event.
Anyone got any ideas???
Thanks
Jon
Signature space for rent. Apply by email to....
|
|
|
|
|
Ok I figured it. Calling WSAResetEvent() is the key. Would have been handy if MSDN had mentioned that in the docs for WSAEventSelect or WSAWaitForMultipleEvents. :-/
Signature space for rent. Apply by email to....
|
|
|
|
|
hello!
in my mfc-program i need a two dimensional matrix. my problem is: the dimensions (Rows, Cols) are no constant integers, they are integers, only.
a few people in this forum tried to help me, but i still have errors and problems. i know, now (because of the feedback here), that i must do something with 'new' and 'pointer'.
who can help me more in detail?
MFC
|
|
|
|
|
i recomand u using vector of vectors its better that way,
see STL Type: std::vector
If u want to use pointers its something like this:
double ** ppDouble ;
for ( int iLines= 0 ;iLines<iNumberOfLines;iLines ++)
ppDouble = new (double*);
for ( int iColumns=0;iColumns<iNumberOfColumns ;iColumns++)
ppDouble [ iColumns ] = new double;
for ( int iLines= 0 ; iLines< iNumberOfLines ; iLines ++)
for ( int iColumns=0; iColumns<iNumberOfColumns ; iColumns++)
ppDouble [iLines][iColumns] = someValueUwantToaffectOrResultOfAfunction;
Papa
while (TRUE)
Papa.WillLove ( Bebe ) ;
|
|
|
|
|
great, thanks.....
only one small mistake:
u wrote:
for(int iColumns=0 ;
iColumns<iNumberOfColumns ;
iColumns++)
but i think you must write:
for(int iColumns=0;
iColumns<iNumberOfLines ;
iColumns++)
thanks for everything!
MFC
|
|
|
|
|
You could use this ready built class
http://www.codeproject.com/cpp/MatrixClass.asp[^]
Roger Allen
Sonork 100.10016
I think I need a new quote, I am on the prowl, so look out for a soft cute furry looking animal, which is really a Hippo in disguise. Its probably me.
|
|
|
|
|
consider the following code snip of code
#include <map>
using namespace std;
typedef map<float,float> XY_DATA;
XY_DATA m_mapLines;
..
..
for(int i=0;i<100;i++)
m_mapLines[i]=i;
well the following assignment for the map is done
and a relative increase in memory consumed is observed.
OK
now for my problem
when i try to release the memory allocated using
m_mapLines.empty()
or
clear()
eventhough when i try map.size() i get zero.
there is no memory reduction in the taskmamager
what should i do to reduce the memory consumed by the map after emptying all its contents???
|
|
|
|
|
What the task manager displays is the memory footprint of the program, which usually does not decrease automatically when deallocating memory. You shouln't actually worry much about it, except if the footprint grows continually and does not stabilize.
Joaquín M López Muñoz
Telefónica, Investigación y Desarrollo
|
|
|
|
|
yes so it seems
if i start alocating again say upto the next 100 points the footprint doesnt increase
but after that it starts again
so let me get this staright
1. u r saying everythings ok and there is no memory leak??
2. can i actually reduce the programs memory "footprint"??
3. could u suggest any tools i could use to effectively check memory consumptions/leaks etc..... shareware/freeware the better
4. first time hearing that word ..funky ne...."mem footprint"
thankx
fordge
|
|
|
|
|
For verifying memory leaks, BoundsChecker is the best tool I've used (though it does have it's own annoying quirks and isn't updated as much as I would like, it's also relatively expensive.) VC++ has built in memory leak detection, though it's lousy at actually pinpointing the offending objects. Refer to the documentation.
The current behavior is actually desireable. Were the C++ heap to reduce the memory used with every deallocation, your program would slow measurably.
If you plan on allocating large amounts of memory temporarily, you can use the GlobalAlloc functions (I believe in STL you can write your own allocators, but I'm not well enough acquainted with STL to tell you the details.)
Remember that in Win32, memory is virtualized. If unused, the memory will likely be swapped to disk and will be retrieved when accessed (you don't need to worry about it.) As was pointed out earlier, use perfmon to watch memory usage over time. Watch for continual increasing slopes (also avoid looking at the first few seconds of a program--I've had several programs where you needed to ignore the first five to ten minutes since they looked just like memory leaks.)
|
|
|
|
|
1. Probably: std::map behaves well, and you're not using any pointer stuff, so there's not much room for leaks.
2. Don't know. I guess it can be done, but usually there's no point in achieveing it. Footprint does not compromise the performance of your system.
3. For a start, have a look at _CrtMemCheckpoint and related functions.
Joaquín M López Muñoz
Telefónica, Investigación y Desarrollo
|
|
|
|
|
well actually i am using pointer variables in my map
which is actually a pointer of huge struct with project related info..
just didnt mention it in the snippet thinking it would just complicate the matter
i think u guys have sorted things a lot for me
thanx again
|
|
|
|
|
fordge wrote:
actually i am using pointer variables in my map
You need to call delete for every new !
So when you enter a new ed pointer into your map, you have to call delete on it before you dispose you only means of acces to it by erase() .
|
|
|
|
|
I have a modal dialog with a command bar control.
So, to enable / disable some buttons of the command bar control I use the
OnUpdate???(CCmdUI* pCmdUI) function.
So, after I found out that the OnUpdate???(CCmdUI* pCmdUI) function
will not be called automatic (in the idle loop), I added the line
m_pWndEmptyCB->OnUpdateCmdUI((CFrameWnd *)this, TRUE); each time in the
program where I change the command bar state.
It works fine, always the right buttons are enabled / disabled.
I have only one problem!
Sometimes the wrong button icons (disabled/enabled icons)
are painted on the buttons.
When I have a disabled button it could be, that it have a "enabled icon".
And when I have a enabled button, it could be that it have a "disabled icon".
When I click on the enabled button, the right icon (enabled icon) will be painted!
Any idea to fix that problem??? It looks like missing a (re)painting message of the
command bar!
(I am working with embedded Visual C++ 3.0)
--
Nice greets, Daniel.
|
|
|
|
|
Hi !
My question has nothing to do with C++, but well, maybe someone can help me anyway !
I'm launching a BAT file from my App, under Win2000. My problem is that in the .BAT file, 4 commands are executed, but not one after the other : Win2000 opens 4 DOS Windows, and the 4 apps are executed simultaneously.
I always thought that commands in a BAT file were executed one after the other ! Is it something new with Win2000, or with Windows ? Is there a way to make sure that the commands will be executed one after the other ?
Thank your for your help,
Jerome
|
|
|
|
|
Dont use a batch, try looking for system, WinExec, CreateProcess or even better:
http://www.codeproject.com/system/newbiespawn.asp
Papa
while (TRUE)
Papa.WillLove ( Bebe ) ;
|
|
|
|
|
A batch file executed by cmd.exe is AFAIK processed sequentially and synchronously (e.i. pgm2 is executed only after pgm1 has terminated). Are you launching the batchfile using something like
system("%COMSPEC% /C batchfile.bat");
(you might have to do your own COMSPEC substitution)?
|
|
|
|
|
Are you sure the commands in the .BAT file are starting console applications, and not Windows applications. If you start a Windows application from a .BAT file (or a command prompt) it will detach immediately, and the next command in the batch file will be executed.
For example, the batch file:
notepad file1
notepad file2
notepad file3
will start three copies of notepad that will stay around even after the batch file completes.
On the other hand, the batch file:
ipconfig
netstat
nbtstat -a
will run the three programs in sequence, since they are all console applications.
You can achieve your desired behavior with windows applications by putting "start /wait " in front of the program name:
start /wait notepad file1
start /wait notepad file2
start /wait notepad file3
--------
There are 10 types of people in this world. Those who know binary and those who don't.
|
|
|
|
|
Thanks a lot !
This is exactly what I needed to know !
Jerome
|
|
|
|
|
I'm looking for a way to modify the main icon of an executable at run time. The required function, UpdateResource, is only supported in WinNT/2000/XP. Does any one know of a way of implementing something equivalent to UpdateResource in Win95/98/ME? One publicly available commercial library, Geeworks, is sold at the ridiculous price of $2999. Any help would be appreciated.
Henry P.
http://www.allersoft.com
|
|
|
|
|